AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Create View gibt Fehler zurück
Thema durchsuchen
Ansicht
Themen-Optionen

Create View gibt Fehler zurück

Ein Thema von okoeller · begonnen am 9. Aug 2008 · letzter Beitrag vom 9. Aug 2008
Antwort Antwort
okoeller

Registriert seit: 21. Nov 2006
66 Beiträge
 
Turbo Delphi für Win32
 
#1

Create View gibt Fehler zurück

  Alt 9. Aug 2008, 12:31
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
Hallo

ich erzeuge mit
SQL-Code:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE NAME = 'access_rightsAND xtype = 'V')
exec ('Create view dbo.access_rights as
select sys.name as login_name,
ben.benutzer_id as benutzer_id,
ben.name as name,
ben.std_kundenstamm as std_kundenstamm,
ben.access_rights as access_rights,
ben.beschreibung as beschreibung
from sysusers sys
LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name)
where hasdbaccess = 1
')
erfolgreich eine view.

Jetzt ändere ich die Zeile 10 wie folgt:
LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name) and (ben.access_rights <> 'Deaktiviert' ) und bekomme den Fehler:
"Falsche Syntax in der Nähe von Deaktiviert".

Wenn ich aber
SQL-Code:
select sys.name as login_name,
       ben.benutzer_id as benutzer_id,
       ben.name as name,
       ben.std_kundenstamm as std_kundenstamm,
       ben.access_rights as access_rights,
       ben.beschreibung as beschreibung
from sysusers sys
LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name) and (ben.access_rights <> 'Deaktiviert' )
where hasdbaccess = 1
mit TOAD ausführe bekomme ich auch Ergenisse ohne Fehlermeldung.

Was mach ich hier falsch?

oliver
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 13:23
Hallo Oliver,

wäre es so nicht besser?

SQL-Code:
select sys.name as login_name,
       ben.benutzer_id as benutzer_id,
       ben.name as name,
       ben.std_kundenstamm as std_kundenstamm,
       ben.access_rights as access_rights,
       ben.beschreibung as beschreibung
from sysusers sys
LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name)
where hasdbaccess = 1
and ben.access_rights <> 'Deaktiviert'
Freundliche Grüße
  Mit Zitat antworten Zitat
okoeller

Registriert seit: 21. Nov 2006
66 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 13:40
Hallo marabu

leider bekomme ich mit
SQL-Code:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE NAME = 'access_rightsAND xtype = 'V')
exec ('Create view dbo.access_rights as
select sys.name as login_name,
ben.benutzer_id as benutzer_id,
    ben.name as name,
    ben.std_kundenstamm as std_kundenstamm,
    ben.access_rights as access_rights,
    ben.beschreibung as beschreibung
from sysusers sys
LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name)
where hasdbaccess = 1 and ben.access_rights <>
'Deaktiviert'
')
immer noch den Fehler:
"Falsche Syntax in der Nähe von Deaktiviert"

oliver
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 13:45
Wie sieht denn das DDL Statement von Tabelle BENUTZER aus?
  Mit Zitat antworten Zitat
okoeller

Registriert seit: 21. Nov 2006
66 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 14:02
Hall marabu,

also ich hab inzwischen herausgefunden was DDL bedeutet (google sei dank),
aber leider weis ich nicht wo ich in Toad die Info bekommen kann welche DDL für benutzer verwendet wird.
Ich hab die Tabelle benutzer ausgewählt und bin alle Karteikarten durchgegangen die für benutzer zur Verfügung stehen.

Nach welchen Informationen zur DataDefinitionLanguage muß ich ausschau halten?

oliver
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 14:41
Ich wollte von dir wissen welchen Datentyp das Feld BENUTZER.ACCESS_RIGHTS hat. Das entsprechende DDL-Statement ist CREATE TABLE BENUTZER ... - du hast es als Script irgendwo liegen oder kannst es vom DBMS erzeugen lassen. Auch TOAD sollte die Bereitstellung von DDL Statements unterstützen.

Mein Verdacht ist, dass dein Feld keinen passenden Typ hat, der mit dem String-Literal 'Deaktiviert' verglichen werden könnte.
  Mit Zitat antworten Zitat
okoeller

Registriert seit: 21. Nov 2006
66 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 14:54
Hallo marabu,

das Feld access_rights ist vom Typ varchar(30) NOT NULL siehe Script

SQL-Code:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE NAME = 'benutzerAND xtype = 'U')
CREATE TABLE dbo.[benutzer] (
[benutzer_id] int IDENTITY(1,1) NOT NULL,
[login_name] varchar(20) NOT NULL,
[name] varchar(80) NOT NULL,
[access_rights] varchar(30) NOT NULL,
[beschreibung] varchar(300) NOT NULL,
[std_kundenstamm] varchar(50) NOT NULL,
PRIMARY KEY ([benutzer_id]),
UNIQUE (login_name)
)
oliver
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#8

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 15:14
Genau das ist das DDL nach dem gefragt wurde
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 15:20
Kann es sein, dass du beim Eintragen deines Statements als CommandText vergessen hast die beiden Apostrophe rund um Deaktiviert zu verdoppeln?

SQL-Code:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE NAME = 'access_rightsAND xtype = 'V')
exec ('Create view dbo.access_rights as
select sys.name as login_name,
ben.benutzer_id as benutzer_id,
ben.name as name,
ben.std_kundenstamm as std_kundenstamm,
ben.access_rights as access_rights,
ben.beschreibung as beschreibung
from sysusers sys
LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name)
where hasdbaccess = 1
and ben.access_rights <>
''Deaktiviert''
')
  Mit Zitat antworten Zitat
okoeller

Registriert seit: 21. Nov 2006
66 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Create View gibt Fehler zurück

  Alt 9. Aug 2008, 15:29
Hallo marabu,

es hat funktioniert mit den doppelten Anführungzeichen.
Hab schon einige Variationen ausprobiert, aber nicht diese.
Ich hatte auch vermutet dass es mit der Syntax zu tun hat.

Nochmals vielen Dank.

Oliver
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz