Autor Beitrag
luna22
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 14.12.04 13:07 
Hallo zusammen,
habe folgendes Problem:

Daten aus zwei Tabellen sollen übertragen werden mit folgender Anweisung:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 with IBQuery5 do
    begin
      close;
      sql.Clear;
      sql.Add('SELECT ikpf_test.IBLNR, ikpf_test.GJAHR, iseg_test.ZEILI,iseg_test.MATNR,  iseg_test.WERKS, iseg_test.LGORT, iseg_test.CHARG, iseg_test.SOBKZ, iseg_test.BSTAR''iseg_test.USNAZ, iseg_test.ZLDAT, iseg_test.XZAEL, iseg_test.MENGE, iseg_test.MEINS, iseg_test.ERFMG FROM ikpf_test INNER JOIN iseg_test ON (ikpf_test.GJAHR = iseg_test.GJAHR) AND (ikpf_test.IBLNR = iseg_test.IBLNR)');
      open;
    end;


Bei Ausführung kommt die Fehlermeldung:

SQL Error
SQL Error Code -104
token unknown -line1, char 167

Kann mir jemand helfen???

Danke

luna
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Di 14.12.04 13:23 
Das hier
ausblenden Quelltext
1:
, iseg_test.BSTAR'+ 'iseg_test.USNAZ,					

ist schonmal falsch. Da muss auf jeden Fall noch ein Leerzeichen zwischen.

Bis neulich ...
luna22 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 14.12.04 13:26 
Titel: ..
ja das Leerzeichen ist doch im Original da, ist nur hier irgendwie verruscht! :lol:
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Di 14.12.04 13:28 
Hi,

ersetze ale aller erstes mal die TIBQuery mit TIBDataSet. Die TIBQuery wurden lediglich zu Umstellungszwecken (BDE-IBX) programmiert und sollen eigentlich nicht eingesetzt werden.

Zum eigentlichen SQL:

Verwende Tabellen-Aliase:

ausblenden Delphi-Quelltext
1:
      sql.Add('SELECT A.IBLNR, A.GJAHR, B.ZEILI, B.MATNR, B.WERKS, B.LGORT, B.CHARG, B.SOBKZ, B.BSTAR''B.USNAZ, B.ZLDAT, B.XZAEL, B.MENGE, B.MEINS, B.ERFMG FROM A INNER JOIN B ON (A.GJAHR = B.GJAHR) AND (A.IBLNR = B.IBLNR)');					


Dann wirst Du feststellen, dass hier der Fehler liegt:

ausblenden Delphi-Quelltext
1:
B.BSTAR'+ 'B.USNAZ					


daraus wird:

ausblenden Delphi-Quelltext
1:
B.BSTARB.USNAZ					


Also bitte ein Leerzeichen reinhauen!

Lemmy
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Di 14.12.04 14:10 
Hi,

ich bin mir nicht so sicher, ob da ein leerzeichen hilft. Ich vermute luna22 will die beiden spalten wirklich addieren.
Dann muss das ganze so aussehen.
ausblenden Delphi-Quelltext
1:
   sql.Add('SELECT A.IBLNR, A.GJAHR, B.ZEILI, B.MATNR, B.WERKS, B.LGORT, B.CHARG, B.SOBKZ, B.BSTAR + B.USNAZ, B.ZLDAT, B.XZAEL, B.MENGE, B.MEINS, B.ERFMG FROM A INNER JOIN B ON (A.GJAHR = B.GJAHR) AND (A.IBLNR = B.IBLNR)');					


Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
luna22 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 14.12.04 14:12 
also hab jetzt folgendes geändert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
 with IBDataSet1 do
    begin
      close;
      deletesql;
      selectsql.Add('SELECT ikpf_test.IBLNR, ikpf_test.GJAHR, iseg_test.ZEILI, iseg_test.MATNR, iseg_test.WERKS, iseg_test.LGORT, iseg_test.CHARG, iseg_test.SOBKZ, iseg_test.BSTAR' +
      'iseg_test.USNAZ, iseg_test.ZLDAT, iseg_test.XZAEL, iseg_test.MENGE, iseg_test.MEINS, iseg_test.ERFMG FROM ikpf_test INNER JOIN iseg_test ON (ikpf_test.GJAHR = iseg_test.GJAHR) AND (ikpf_test.IBLNR = iseg_test.IBLNR)');
      open;
end;


bekomme aber noch immer diesselbe Fehlermeldung.

SQL ERROR
ERROR CODE -104
Line 1 char 167

wo könnte der Fehler denn sonst noch liegen?
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 14.12.04 14:16 
Hallo
Vor iseg_test.USNAZ (oder hinter iseg_test.BSTAR) fehlt das Komma.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
 with IBDataSet1 do
    begin
      close;
      deletesql;
      selectsql.Add('SELECT ikpf_test.IBLNR, ikpf_test.GJAHR, iseg_test.ZEILI, iseg_test.MATNR, iseg_test.WERKS, iseg_test.LGORT, iseg_test.CHARG, iseg_test.SOBKZ, iseg_test.BSTAR' +
      ', iseg_test.USNAZ, iseg_test.ZLDAT, iseg_test.XZAEL, iseg_test.MENGE, iseg_test.MEINS, iseg_test.ERFMG FROM ikpf_test INNER JOIN iseg_test ON (ikpf_test.GJAHR = iseg_test.GJAHR) AND (ikpf_test.IBLNR = iseg_test.IBLNR)');
      open;
end;


So sollte das eigentlich funktionieren

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 14.12.04 14:17 
Ist das oben beschriebene Leerzeichen wirklich drin, denn in dem Quellcode ist zwischen
ausblenden Delphi-Quelltext
1:
...iseg_test.BSTAR' +					

und
ausblenden Delphi-Quelltext
1:
'iseg_test.USNAZ, iseg_test.ZLDAT,					

kein Leerzeichen und auch kein Komma! Und laut der Zeichenangabe könnte da auch der Fehler liegen.

//EDIT: Verdammt, zu langsam ;-)