Entwickler-Ecke
Datenbanken - Query mit dbExpress mit nur max. 6 Feldern
Schumi - Fr 01.04.05 08:20
Titel: Query mit dbExpress mit nur max. 6 Feldern
Hallo zusammen,
benutze dbExpress, um auf eine Oracle Datenbank zuzugreifen (mit den CoreLab-Treibern der Zusatz-CDs von Delphi 7).
Dies funktioniert mit der Kompo TSQLQuery auch wunderbar. Aber nur solange die Anzahl der zurückgelieferten Felder eines SELECT-Queries die Anzahl 6 nicht übersteigt.
Ist dies der Fall, gibt Delphi eine Fehlermeldung "dbExpress: Das Feld XYZ wurde nicht gefunden!".
Hat jemand eine Idee?
Vielen Dank!
webbi - Fr 01.04.05 10:33
Ich benutzte Selber die CoreLab-Komponenten, Allerdings mit MS-SQL...
Hatte aber auch bei 154 Feldern noch keine Probleme...
Poste doch mal den Query...
jasocul - Fr 01.04.05 10:43
Hast du das schon mal mit einer anderen Tabelle oder dem "*" im Select probiert?
Vielleicht hast du dich auch wirklich nur vertippt und das Feld heißt gar nicht "XYZ"?
Schumi - Fr 01.04.05 10:45
Hier einmal der Code, den ich verwende:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TfrmHardware.DruckerdatenLaden(dname: string); var SQLText,hilfe : string; begin with frmMain.sqlqryOracle do begin Close; SQLText:='select DRUCKER_SN,DRUCKER_STPSN,DRUCKER_NAME,DRUCKER_DINASNAME,'+ 'DRUCKER_STANDORTID,DRUCKER_ANSCHLUSSID,DRUCKER_TYPID,DRUCKER_IPADRESSE'+ ' from DRUCKER where DRUCKER_STPSN=:sn';
SQL.Text:=SQLText; ParamByName('sn').AsString:=copy(dname,1,4);
Active:=true;
First; while not eof do begin edtName.Text:=FieldByName('DRUCKER_NAME').AsString; mskedtSTPSN.Text:=FieldByName('DRUCKER_STPSN').AsString; edtSN.Text:=FieldByName('DRUCKER_SN').AsString; edtDINAS.Text:=FieldByName('DRUCKER_DINASNAME').AsString; hilfe:=FieldByName('DRUCKER_IPADRESSE').AsString; cmbxStandort.ItemIndex:=FieldByName('DRUCKER_STANDORTID').AsInteger-1; cmbxAnschluss.ItemIndex:=FieldByName('DRUCKER_ANSCHLUSSID').AsInteger-1; cmbxDruckertyp.ItemIndex:=FieldByName('DRUCKER_TYPID').AsInteger-1; Next; end;
Active:=false; end; end; |
Wenn ich das ganze mit "Select * from ..." mache, ändert sich auch nichts!
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt.
LCS - Fr 01.04.05 10:50
Hi
schau doch mal nach ob für die Query vielleicht noch persistente Felder angelegt sind, die jetzt nicht mehr stimmen. (Rechte Maustaste auf die Query und Feldereditor) Falls ja, löschen oder anpassen.
Gruss Lothar
jasocul - Fr 01.04.05 10:53
Vermutlich bekommst du den Fehler in der Zuweisungsschleife. Oder doch schon beim Active:=True?
Kommentier die Zeile, bei der es passiert doch mal aus. Bekommst du dann den Fehler beim nächsten Feld auch?
Schumi - Fr 01.04.05 11:01
@jasocul: Der Fehler passiert in der Zuweisungsschleife und auch bei auskommentierter Zeile (dann halt das nächste Feld)
@LCS : Persistente Felder gibts leider auch keine
Habe auch bei anderen Projekten (und auch anderen Oracle-Datenbanken) diesen Fehler. Bei CoreLab und dem M$-SQL-Server hatte ich nie Probleme!
Schumi - Mo 04.04.05 10:28
So, Problem gelöst.
Habe eine neue Version der CoreLab-Treiber geladen. Das geht jetzt ab wie ein Zäpfchen :D
Trotzdem vielen Dank für Eure Hilfe!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!