![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBX
Datenbank - Schreibend Zugreifen?
Hallo zusammen,
ich bin hier fast am wahnsinnig werden ... und vermutlich liegt es nur an meiner eigenen Dummheit ... wie so oft -.-. Ich suche eine Funktion mit der ich einfach in eine Datenbank (Firebird 2.1) SCHREIBEN kann ... ich bin schon den ganzen morgen am suchen und kann jetzt auf 4 arten Daten lesen aber ich find kein beispiel zum schreiben. Wenn kann mich irgendwer von euch von meinem Leiden erlösen? Vielen lieben Dank, EDIT: Alter Titel: "Datenbank - Schreibend Zugreifen - Zu blöd zum Googlen???" Neuer Titel: "Datenbank - Schreibend Zugreifen?" |
Re: Datenbank - Schreibend Zugreifen - Zu blöd zum Googlen??
Einfach per SQL :zwinker:
SQL-Code:
Insert into <Tabelle> (<Feldliste>) values (<Werte>);
|
Re: Datenbank - Schreibend Zugreifen - Zu blöd zum Googlen??
Hab ich ja versucht etwa so:
Delphi-Quellcode:
Der mag aber die normalen '' Strings nicht :(, gibt es keine Methode die ich irgendwie überladen kann wo ich sagen kann:
for I :=0 to List1.Count -1 begin
for K := 0 to List2.Count -1 begin DBM.IBSQL1.SQL := DBM.IBSQL1.SQL + 'insert into ' + 'Feldname1; Feldname2+; Feldname3' + ' values ' + (TotalkomplexeStruktur.UnterKlasse.ObjectList.Item[I] as TCastKlasse).Item[K] as string) + ','; end; ... DBM.IBSQL1.ExecQuery; end; [PSEUDOCODE] Datenbank.Connect; AddRow(TotalKomplizierterDatenTyp); procedure AddRow(TotalKomplizierterDatenTyp : TTotalKomplizierterDatenTyp); begin Schleife mit I Field[I]:=TotalKomplizierterDatenTyp.Item[I] end; [/PSEUDOCODE] Viele Grüße EDIT: :wall: :wall: :wall: :wall: :wall: StringList ... sry done... -.- |
Re: Datenbank - Schreibend Zugreifen?
Hallo,
du solltest dein .SQL mal vor dem ExecQuery ansehen (ShowMessage), dann siehst du auch, was du verkehrt machst. 1. ein normales SQL Insert beginnt erst mal so
SQL-Code:
Du schreibst aber statt dem Komma ein Semikolon, wozu ?
Insert Into Table1(Feld1,Feld2,Feld3) ...
Ausserdem ein +, was hier überhaupt nicht hingehört, und es fehlt die Klammer ) am Ende 'Feldname1; Feldname2+; Feldname3' Zu deinem String-Problem, benutze Parameter.
Delphi-Quellcode:
Dein DBM.IBSQL1.SQL := DBM.IBSQL1.SQL + XXX
var
CastKlasse : TCastKlasse; sFieldValue : String; // damit man das auch mal Debuggen kann begin ... DBM.IBSQL1.SQL:= 'Insert Into Table1(Feld1,Feld2,Feld3)' +'Values(:Feld1,:Feld2,:Feld3)'; CastKlasse:= TCastKlasse(TotalkomplexeStruktur.UnterKlasse.ObjectList.Item[I]); // oder so ähnlich sFieldValue:= CastKlasse).Item[K]); DBM.IBSQL1.ParamByName('Feld1').AsString:= sFieldValue; macht auch nicht viel Sinn, weil das SQL-Statement immer länger wird in der Art 'Insert Into XX Insert Into YY ' Einzige Grund wäre, wenn die Felder in deiner List1 zu verschiedenen Tabellen gehören würden und die Anzahl variabel ist. Das ist aber nicht ersichtlich, weil meine Glaskugel List1 und List2 nicht kennt. Edit: TotalKomplizierterDatenTyp sollte durch lokale Variable zumindestens soweit vereinfacht werden, dass man das debuggen kann (Watch-Point). Heiko |
Re: Datenbank - Schreibend Zugreifen?
Hallo,
ja wie oben im Edit schon gesagt, ich habs soweit gelöst, stehe jetzt allerdings vorm nächsten Problem, wie wandle ich ein DateTime von Delphi in ein DateTime von Firebird? Geht das überhaupt? FloatToStr und DateTimeToStr gehn beide nicht, auch abendteuerliche Funktionen wie berechne die Zeit in sekunden von 1970 bis da hin gehn nicht ... jmd ne Idee? Vielen Dank Tobi |
Re: Datenbank - Schreibend Zugreifen?
Hier gilt erst recht: Benutze Parameter, dann übernimmt IBX die Konvertierung. Dann ist aber nicht Param(..).AsString zu verwenden, sondern Param(...).AsDateTime o.ä. Jürgen
|
Re: Datenbank - Schreibend Zugreifen?
Mach dich mal über (SQL-)Parameter schlau
|
Re: Datenbank - Schreibend Zugreifen?
Hallo zusammen,
nach langem weiter googeln und viel rum gefrage bin ich auf die TIBTable gestoßen die genau das macht was ich wollte. Vielen dank für eure Mühen, und verzeiht das ich mich mit Delphi noch recht unbeholfen anstelle, ich arbeite erst seit 2 Wochen mit dieser Sprache. Grüße Tobi |
Re: Datenbank - Schreibend Zugreifen?
Hallo,
das hätte ich dir auch sagen können, habe ich aber nicht. TIBTable ist nur wegen der "Abwärtskompatibilität" zur BDE drin und sollte nicht verwendet werden. Heiko |
Re: Datenbank - Schreibend Zugreifen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz