![]() |
Datenbank: InterBase • Zugriff über: BDE
Wert von Lookupcombobox in DB schreiben
Hallo zusammen,
ich hätte da mal eine kleine Frage bezüglich eines Wertes, den ich in eine DB schreiben möchte. Ich habe eine Tabelle mit z.B. Kunden. Weiterhin habe ich eine Tabelle mit Artikeln. Der Primärschlüssel von Kunden ist der Fremdschlüssel bei der Tabelle Artikel, um diese Tabellen miteinander zu verknüpfen. Nun möchte ich gerne einen neuen record in die Tabelle Artikel einfügen. Ich hätte dabei gerne die Möglichkeit aus einer ComboBox die bestehenden Kunden auszuwählen. Ich suche also nach einer Möglichkeit, eine bestimmte Spalte einer Tabelle in der ComboBox anzeigen zu lassen. Um das ganze nicht manuell über eine For-Schleife zu machen, habe ich die DBLookupComboBox gewählt. Ich möchte nun gerne den Primärschlüssel des ausgewählten Kunden in die entsprechende Spalte (Foreign key) des Artikels schreiben. Kann mir da jemand nen Tipp geben??? Bis jetzt habe ich es so versucht:
SQL-Code:
Aber wenn ich das Ganze einfüge bekomm ich einen SQL-Fehler. Error Conversion from String...
qrMain.SQL.Clear;
qrMain.SQL.Text:='INSERT INTO artikel'+ '(text, jahr, land, kunde)'+ ' VALUES '+ '('''+Edit1.Text+''', '''+Edit2.Text+ ''', '''+Edit3.Text+''', '''+DBLookupComboBox1.Text+''');'; qrMain.ExecSQL; freu mich, wenn da wieder jemand seine Erfahrung mit mir teilt... :mrgreen: Liebe Grüße Steffi |
Re: Wert von Lookupcombobox in DB schreiben
hoi,
ist die spalte 'jahr' bei dir wirklich als string / Varchar definiert oder als date/timestamp etc. ? auf den ersten blick könnte ich mir vorstellen das da einfach das format nicht stimmt .... cya |
Re: Wert von Lookupcombobox in DB schreiben
ja, das habe ich in diesem Fall so gemacht. Ich weiß, dass es in diesem Fall nicht viel Sinn macht, aber da ich das Programm nur zum testen verwende, dachte ich, ist das jetzt mal ok.
Muss ich denn eventuell den Wert der ComboBox irgendwie verändern? Liebe Grüße Steffi |
Re: Wert von Lookupcombobox in DB schreiben
hoi
auf den zweiten blick etwas wo ich mir net ganz sicher bin : es geht dabei um das leerzeichen nach 'values' und vor der klammer ... im mom bin ich mir net ganz sicher ob das net weg muss ... ich dachte an:
Delphi-Quellcode:
qrMain.SQL.Text:='INSERT INTO artikel(text, jahr, land, kunde) VALUES('+QuotedStr(Edit1.Text)+','+QuotedStr(Edit2.Text)+','+QuotedStr(Edit3.Text)+','+QuotedStr(DBLookupComboBox1.Text)+' ;' ;
cya |
Re: Wert von Lookupcombobox in DB schreiben
hmmm, ich hab das mal versucht, aber mit der quotedStr()-Methode komm ich gar nicht durch.
Wenn ich mir "DBLookupComboBox1.Text" in einem Edit ausgeben lasse, bekomme ich dort einen String-Wert zurück. Nämlich den aktuell ausgewählten. Allerdings will ich doch nur die entsprechende ID des records... :roll: Weisst du noch was? Liebe Grüße Steffi |
Re: Wert von Lookupcombobox in DB schreiben
hoi,
wenn ich es richtig verstehe, dann müsstest du vorher die ID bekommen ... 'select id from tabelle where inhalt='dblookupcombobox1.text' ; die id speichern und dann dein insert-statement aufrufen und die entsprechende id übergeben ... cya |
Re: Wert von Lookupcombobox in DB schreiben
Zitat:
müsste doch das auch mit der LookupCombobox gehen, oder? ![]() Schaust du vll. nochmal? Liebe Grüße Steffi |
Re: Wert von Lookupcombobox in DB schreiben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
hab hier im Forum ein Beispiel gefunden, dass eingentlich alles wunderschön zeigt. Ich danke dem Ersteller vielmals und hoffe, dass es in ordnung geht, wenn ich es hier nochmal anhänge, da ich den entspr. Thread nich mehr finde... :roll: Liebe Grüße Steffi |
Re: Wert von Lookupcombobox in DB schreiben
Hallo,
mit der LookUpComboBox kenne ich mich leider nicht aus. Meine Idee: Die ComboBox wird aus der Datenbank gefüllt, oder? Warum lädst du die ComboBox nicht "händisch" und füllst nebenbei ein Array of Integer (nennen wirs mal ArrayBenutzerIDS) mit den Primärschlüsseln der Benutzer? Dann brauchst du nur noch
Delphi-Quellcode:
ausführen.
qrMain.SQL.Text:='INSERT INTO artikel(text, jahr, land, kunde) VALUES('+QuotedStr(Edit1.Text)+','+QuotedStr(Edit2.Text)+','+QuotedStr(Edit3.Text)+',' + inttostr( ArrayBenuzterIDs[Combobox.ItemIndex]) + ' ;' ;
|
Re: Wert von Lookupcombobox in DB schreiben
Zitat:
Damit erhälst du (in deinem Fall die ID=Primärschlüssel des Kunden) den entsprechenden Wert des KeyField vom ausgewählten Eintrag(ListField) der Box. Noch ein Tipp: um die Hochkommaorgie oder QuotedString-Geschichte zu umgehen, bietet sich die sog. Parametrisierung an:
Delphi-Quellcode:
Die Syntax bzgl der Parameter ist teilweise von der verwendeten QueryKomponente abhängig/unterschiedlich; hier mal die entsprechende Referenz/Dokumentation befragen...
//rMain.SQL.Clear; <--- nicht notwendig, wenn SQL.Text:= verwendet wird
qrMain.SQL.Text:='INSERT INTO artikel '+ '(text, jahr, land, kunde) '+ ' VALUES (:TEXT, :JAHR, :LAND, :KUNDE)'; qrMain.SQL.Params[0].Value := Edit1.Text; qrMain.SQL.Params[1].Value := Edit2.Text; qrMain.SQL.Params[2].Value := Edit3.Text; qrMain.SQL.Params[3].Value := DBLookupComboBox1.KeyValue; {Parameter über Namen ansprechen qrMain.SQL.ParamByName('TEXT').Value := Edit1.Text; qrMain.SQL.ParamByName('JAHR').Value := Edit2.Text; qrMain.SQL.ParamByName('LAND').Value := Edit3.Text; qrMain.SQL.ParamByName('KUNDE').Value := DBLookupComboBox1.KeyValue; } qrMain.ExecSQL; andere Möglichkeit
Delphi-Quellcode:
qrMain.SQL.Text:= Format('INSERT INTO artikel '+
'(text, jahr, land, kunde) '+ ' VALUES (%s, %s, %s, %s) ', [Edit1.Text, Edit2.Text, Edit3.Text, DBLookupComboBox1.KeyValue]); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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