Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenübergabe an ein anderes Feld (https://www.delphipraxis.net/63655-datenuebergabe-ein-anderes-feld.html)

HartiMcFly 21. Feb 2006 10:49

Datenbank: Firebird • Version: 1.5.2 • Zugriff über: IB Database, IB Transaction, IBQuery, IBUpdateSQL

Datenübergabe an ein anderes Feld
 
Hallo,

ich weiß nicht ob ich einfach nur einen Denkfehler mache, aber ich hoffe mal ihr könnt mir hier weiterhelfen.

Ich habe eine Datenbank mit 2 Tabellen.
Ich habe im Delphi eine Maske geschrieben, mit der diese Tabellen gefüllt werden.
Ich bin zur Zeit soweit, dass die erste Tabelle ohne Probleme angenommen wird, heißt die Dateneingabe und der Post funktionieren.

Jetzt habe ich in Tabelle 1 und 2 jeweils die Spalte KUNDENNR.
Ich möchte nun die in Tabelle 1 eingegebene KUNDENNR an Tabelle 2 weitergeben.
Ich habe es mit folgender Anweisung probiert.


IBQuery2.FieldbyName('KUNDENNR').AsInteger:=IBQuer y1.FieldbyName('KUNDENNR').AsInteger;

Lasse ich das Programm nun laufen, so bekomme ich folgende Fehlermeldung:

IBQuery2: Das Feld 'KUNDENNR' wurde nicht gefunden.
Das Feld existiert aber definitiv, ich kann z.B. ohne Probleme über ein DBEdit auf dieses Feld zugreifen.

Kann mir hier jemand von euch weiterhelfen?

Danke

Frank Borland 21. Feb 2006 11:34

Re: Datenübergabe an ein anderes Feld
 
Moin, moin,

wie sieht denn das SQL- Statement zu IBQuery2 aus? Ist das Feld drin?

Gruß

Malte

HartiMcFly 21. Feb 2006 12:28

Re: Datenübergabe an ein anderes Feld
 
Hallo, das Feld ist in dem SQL Statement mit drin, sonst könnte ich ja auch nicht über ein DBEdit drauf zugreifen, oder??

Danke

Hansa 21. Feb 2006 12:43

Re: Datenübergabe an ein anderes Feld
 
Das DBedit hat nicht unbedingt was damit zu tun. Das Ganze hat nur was mit Deinem DataSet zu tun. Wieso verwendest Du eigentlich IBQuery ? :shock: Aber egal, außer dem überflüssigen BDE-Ballast dürfte es dasselbe sein wie ein TDataset. Und das bedeutet folgendes : das DBEdit hat (standardmäßig) das, was man mit SELECT * FROM BLA auch zur Verfügung hat. Ansonsten könnte man kein DataField auswählen. Wird jetzt ein DataSet.close gemacht oder im OI active auf false gesetzt, dann muß für den nächsten Zugriff wieder ein Select zusammengebaut und dann die Datenmenge wieder geöffnet werden. Und genau da wird das besagte Feld nicht drinstehen ! Und deshalb auch die nicht beantwortete Frage von meinem Vorredner "Frank Borland". :lol:

HartiMcFly 21. Feb 2006 13:02

Re: Datenübergabe an ein anderes Feld
 
Hmm also ich habe in dem IBQuery selber folgende SQL Anweisung

Select * from ADRESSE

Mein Quellcode sieht dann folgender Maßen aus

procedure TForm1.Button1Click(Sender: TObject);
begin
IBQuery1.Open;
IBQuery1.Insert;
IBQuery1.Post;
IBTransaction1.Commit;
IBTransaction1.StartTransaction;

IBQuery2.FieldbyName('KUNDENNR').AsInteger:=IBQuer y1.FieldbyName('KUNDENNR').AsInteger;

IBQuery2.Open;
IBQuery2.Insert;
IBQuery2.Post;
IBTransaction1.Commit;
IBTransaction1.StartTransaction;

end;

Falls jemand ein Beispiel mit einer ähnlichen Aufgabenstellung hätte, wäre ich sehr daran interessiert

Gruß Patrick

Jelly 21. Feb 2006 13:10

Re: Datenübergabe an ein anderes Feld
 
Ist Kundennummer in IBQuery1 von Dir eingegeben, oder wird das durch einen Generator von der Datenbank in einem Trigger generiert... Ist letzteres der Fall, so hast Du nach dem Posten deines ersten Records natürlich noch nichts in der Spalte Kundennummer stehen. Um die Kundennr auszulesen hast Du 2 Möglichkeiten:
- close, open, und zum letzten Record blättern (sehr schlecht Angewohnheit)
- oder nach dem Posten einfach die GEN_ID aus dem Server auslesen, am besten in einer gleiche Transaktion in der auch dein eigentliches Posten abgeht. (schon viel besser :-)

HartiMcFly 21. Feb 2006 13:14

Re: Datenübergabe an ein anderes Feld
 
Die Kundennummer in IBQuery1 ist kein vom Generator erzeugter Wert, sondern ein selbst eingegebener

Jelly 21. Feb 2006 13:26

Re: Datenübergabe an ein anderes Feld
 
Und wie sieht denn jetz dein SQL Statement für IBQuery2 aus.

Arbeitest Du eventuell mit berechneten Feldern, und hast die persistenten Felder deinem Dataset noch nicht hinzugefügt?

Frank Borland 21. Feb 2006 14:23

Re: Datenübergabe an ein anderes Feld
 
ist bei der Zuweisung IBQuery2 überhaupt aktiv?

IBQuery2.FieldbyName('KUNDENNR').AsInteger:=IBQuer y1.FieldbyName('KUNDENNR').AsInteger;
IBQuery2.Open;

was soll das "open" nach der Zuweisung?


Gruß


Malte

Hansa 21. Feb 2006 18:04

Re: Datenübergabe an ein anderes Feld
 
Das Select ist immer noch nicht klar ersichtlich. 8) Was steht vor dem OPEN ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 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