Autor Beitrag
Krischa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

Windows 7 64 Bit
Delphi 2007
BeitragVerfasst: Di 02.06.09 12:04 
Hi,
ich brauche eine Selectanweisung die mir nur gefüllte Felder anzeigt. Bis her habe ich es folgendermaßen gemacht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
query2.SQL.Text:='SELECT EAN FROM '+art1+' WHERE ART="'+prod[j].ian+'"';
query2.open;
if query2.FieldByName('EAN').Value<>NULL then         
  prod[j].pn:=query2.FieldByName'EAN').Value;query2.open;


Wie kann ich die Selectanweisung schreiben damit er mir gleich nur gefüllte Felder ausgibt. Das Feld EAN darf nicht leer sein.
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 02.06.09 12:09 
ausblenden SQL-Anweisung
1:
SELECT EAN FROM artikelTabelle WHERE ART = :ArtikelNr AND EAN IS NOT NULL					

Und bitte arbeite mit Parametern (Stichwort: SQL Injection).

Eine Angabe des verwendeten RDBMS wäre übrigens grundsätzlich angebracht.
Krischa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

Windows 7 64 Bit
Delphi 2007
BeitragVerfasst: Di 02.06.09 12:12 
ausblenden Delphi-Quelltext
1:
query2.SQL.Text:='SELECT EAN FROM '+art1+' WHERE ART="'+prod[j].ian+'" AND EAN IS NOT NULL';					


Funktioniert zwar die Abfrage aber er mekert wenn ich auf das Feld zugreifen will das nichts darin steht.

und was meinst du mit Parametern? (SQL-Anfänger)
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 02.06.09 12:21 
user profile iconKrischa hat folgendes geschrieben Zum zitierten Posting springen:
[...] Funktioniert zwar die Abfrage [...]

Ja, wo ist dann das Problem?

Zitat:
aber er mekert wenn ich auf das Feld zugreifen will das nichts darin steht.

Wer meckert wann und wo mit welcher Fehlermeldung nach dem Du was getan hast?

Zitat:
und was meinst du mit Parametern? (SQL-Anfänger)

lmgtfy.com/?q=delphi...ameter+sql+injection
Krischa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

Windows 7 64 Bit
Delphi 2007
BeitragVerfasst: Di 02.06.09 12:25 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
query2.SQL.Text:='SELECT EAN FROM '+art1+' WHERE ART="'+prod[j].ian+'" AND EAN IS NOT NULL';
query2.open;
prod[j].pn:=query2.FieldByName('EAN').Value;                  
query2.Close;

er meckert bei der dritten Zeile. Typ NULL konnte nicht in String formatiert werden. Daraus ziehe ich das das Feld EAN leer ist, was wiederum durch die Abfrage nicht sein dürfte. Die Artikelnummer gibt es mehrmals in der Datenbank aber nur eine hat eine EAN-Nummer (wegen Gültigkeitsdatum).

Zum Thema Injektion: Der SQL-Server läuft auf einem Lan und hat kein Zugang zum Internet. Es sollte also kein Problem geben.
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 02.06.09 12:28 
user profile iconKrischa hat folgendes geschrieben Zum zitierten Posting springen:
[...] er meckert bei der dritten Zeile. [...]

Wer ist er?

Zitat:
Typ NULL konnte nicht in String formatiert werden. Daraus ziehe ich das das Feld EAN leer ist, was wiederum durch die Abfrage nicht sein dürfte. [...]

Woher willst Du das wissen? Vielleicht hat die Abfrage ja keinen einzigen Datensatz zurückgeliefert. Diesn Fall fängst Du ja nicht ab.

ausblenden Delphi-Quelltext
1:
if not queryMitTollemNamen.Eof then					


Zitat:
Zum Thema Injektion: Der SQL-Server läuft auf einem Lan und hat kein Zugang zum Internet. Es sollte also kein Problem geben.

Famous last words...