AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wert von Lookupcombobox in DB schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Wert von Lookupcombobox in DB schreiben

Ein Thema von Stern · begonnen am 26. Nov 2007 · letzter Beitrag vom 27. Nov 2007
Antwort Antwort
Benutzerbild von Stern
Stern

Registriert seit: 26. Feb 2007
Ort: Köln
74 Beiträge
 
#1

Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 13:40
Datenbank: InterBase • Zugriff über: BDE
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:
 qrMain.SQL.Clear;
        qrMain.SQL.Text:='INSERT INTO artikel'+
                    '(text, jahr, land, kunde)'+
                    ' VALUES '+
                    '('''+Edit1.Text+''', '''+Edit2.Text+
                    ''', '''+Edit3.Text+''', '''+DBLookupComboBox1.Text+''');';
         qrMain.ExecSQL;
Aber wenn ich das Ganze einfüge bekomm ich einen SQL-Fehler. Error Conversion from String...
freu mich, wenn da wieder jemand seine Erfahrung mit mir teilt...

Liebe Grüße
Steffi
steffi
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#2

Re: Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 13:46
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
  Mit Zitat antworten Zitat
Benutzerbild von Stern
Stern

Registriert seit: 26. Feb 2007
Ort: Köln
74 Beiträge
 
#3

Re: Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 13:52
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
steffi
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#4

Re: Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 13:58
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:

 qrMain.SQL.Text:='INSERT INTO artikel(text, jahr, land, kunde) VALUES('+QuotedStr(Edit1.Text)+','+QuotedStr(Edit2.Text)+','+QuotedStr(Edit3.Text)+','+QuotedStr(DBLookupComboBox1.Text)+' ;' ;


cya
  Mit Zitat antworten Zitat
Benutzerbild von Stern
Stern

Registriert seit: 26. Feb 2007
Ort: Köln
74 Beiträge
 
#5

Re: Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 14:08
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...

Weisst du noch was?

Liebe Grüße
Steffi
steffi
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#6

Re: Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 14:13
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
  Mit Zitat antworten Zitat
Benutzerbild von Stern
Stern

Registriert seit: 26. Feb 2007
Ort: Köln
74 Beiträge
 
#7

Re: Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 14:33
Zitat:
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 ...
Ok...Mal davon abgesehen, dass ich momentan nicht weiß, wie ich das machen soll
müsste doch das auch mit der LookupCombobox gehen, oder?
Link

Schaust du vll. nochmal?

Liebe Grüße
Steffi
steffi
  Mit Zitat antworten Zitat
Benutzerbild von Stern
Stern

Registriert seit: 26. Feb 2007
Ort: Köln
74 Beiträge
 
#8

Re: Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 15:58
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...

Liebe Grüße
Steffi
Angehängte Dateien
Dateityp: zip dblookup_348.zip (29,7 KB, 10x aufgerufen)
steffi
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Wert von Lookupcombobox in DB schreiben

  Alt 26. Nov 2007, 17:15
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  qrMain.SQL.Text:='INSERT INTO artikel(text, jahr, land, kunde) VALUES('+QuotedStr(Edit1.Text)+','+QuotedStr(Edit2.Text)+','+QuotedStr(Edit3.Text)+',' + inttostr( ArrayBenuzterIDs[Combobox.ItemIndex]) + ' ;' ; ausführen.
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#10

Re: Wert von Lookupcombobox in DB schreiben

  Alt 27. Nov 2007, 10:08
Zitat von Stern:
...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???
Jo -> DBLookupComboBox1.KeyValue ist das 'Geheimnis'
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:
   //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;
Die Syntax bzgl der Parameter ist teilweise von der verwendeten QueryKomponente abhängig/unterschiedlich; hier mal die entsprechende Referenz/Dokumentation befragen...
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]);
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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