![]() |
Daten aus Listbox auf Editfelder übertragen??
Abend,
ich komme nicht ganz weiter, und zwar habe ich eine listbox und wenn ich da einen eintrag (id) anklicke dann sollen die zu der id gehörenden daten in edit-feldern angezeit werden. so schaut das bei mir aus (ich weiß das es falsch ist!)
Delphi-Quellcode:
ich habe edit-felder gewählt, da ich 3 listboxen habe und per klick auf die ID in die listbox sollen eben die daten auf den selben editfeldern ausgegeben werden.
var i, p:integer;
a:string; begin for i:= 0 to listbox1.Items.Count -1 Do Begin if listbox1.Selected[i] then begin listbox2.Clear; a:=listbox1.Items[i]; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('select Untergruppe from untergruppe.db where Untergruppe LIKE ''' + a + '%'''); Query1.ExecSQL; query1.Active:=true; for p:= 0 to query1.RecordCount-1 Do Begin ListBox2.Items.Add(query1.Fields[0].Asstring); query1.Next; end; end; with table1 do begin Filter := 'gruppe = ' + a; Filtered := True; edit4.Text:=table1gruppe.Value; edit5.Text:=table1name.value; edit6.Text:=table1vorname.Value; edit7.Text:=table1strasse.Value; edit8.Text:=table1Hausnr.Value; edit9.Text:=table1plz.Value; edit10.Text:=table1ort.Value; edit11.Text:=table1telefon.Value; edit12.Visible:=false; end; end; end; Thx im voraus, Plautzer |
Re: Daten aus Listbox auf Editfelder übertragen??
Ich versteh dein Problem noch nicht so ganz. Wann und wo kommt es denn in deinem Quelltext zu einem Fehler?
Wenn ich mir das so anschaue hätte ich ein paar Vorschläge, wobei mir der SQL-String aber auch irgendwie spanisch vorkommt... - try/except-Block um die Query1 und mal schaun ob hier der Fehler herkommt. Nebenbei: Ersetz mal ExecSQL durch Open und lass das Active weg. AFAIK erwartet ExecSQL keine Rückgabe von Werten und sollte nur bei Update, Insert... verwendet werden. - Irgendwie verbinde ich aber auch menthal Query.RecordCount mit -1 als Rückgabe - zumindest bei Pervasive-SQL hatte ich hier oft Probleme. Ich würde auf Query1.IsEmpty prüfen und dann die Datensätze wie folgt durchgehen. Sprich...
Delphi-Quellcode:
Grüsse!
with Query1 do begin
try Open; First; while not eof do begin // mach was Next; end; except on e: exception do ShowMessage(e.message); end; end; [edit=r_kerber]Code- durch Delphi-Tags ersetzt. Mfg, r_kerber[/edit] |
Re: Daten aus Listbox auf Editfelder übertragen??
No prob, ich beschreibe es nochmal genauer.
Ich habe 3 listboxen (jede hat ihr eigene tabelle, mit ids als index), in jeder befinden sich IDs aus den tabellen. Wenn man nun eine ID in einer der Listboxen anklickt, dann sollen in den EDIT-Feldern darunter die Daten angezeigt werden die zu der ID gehören. Das ist alles, ich weiss bloß nicht wie das mit ne query funktioniert. #2 ich habe noch ein kleines problem mit dem löschen von daten. Hier mein code:
Delphi-Quellcode:
Das ganze steht in der Dragdrop procedure einer listbox. ich möchte einfach erreichen, dass wenn man einen Eintrag von der eine listbox zu anderen schiebt, das der Eintrag in der Zieltabelle abgespeichert wird und aus der Source-tabelle gelöscht wird.
(Sender AS TListBox).Items.Add(Items[f]);
(Source AS TListBox).Items.Delete(f); with (source as tquery) do begin t:=(source as ttable).Fields[0].AsString; Close; SQL.Clear; SQL.Add('Delete * from untergruppe.db where Untergruppe =''' + t); ExecSQL; Active:=true; Hier komme ich auch nicht weiter, da ich nicht weiß wie ich den datensatz in der tabelle finde und löschen kann. Vielen Danke im voraus. Plautzer |
Re: Daten aus Listbox auf Editfelder übertragen??
... ich komme einfach nicht drauf! :(
Weiß jemand wie man die daten an einer bst. stelle löscht mit sql? Oder weiß jemand zumindest wo ich informationen darüber finden könnte? Thx, Plautzer |
Re: Daten aus Listbox auf Editfelder übertragen??
Wie gibt man die daten einer Tabelle mittels einer Query auf EDITfeldern aus?
Also wie weist man einem einfachen Editfeld die daten aus der Tabelle zu? Das würde mich auch schon ein ganzes stück wieter bringen. Thx, Plautzer |
Re: Daten aus Listbox auf Editfelder übertragen??
Hai Plautzer,
ich bin nicht sicher ob ich dich richtig verstanden habe. Meinst Du so etwas:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Query1.Close; Query1.SQL.Text := 'SELECT * FROM tabelle WHERE id_feld = :myid'; Query1.ParamCheck := True; Query1.Params.ParamByName('myid').AsString := ListBox1.Items.Strings[ListBox1.ItemIndex]; // ID steht in der Listbox Query1.Open; Edit1.Text := Query1.FieldByName ('feldname_1').AsString; Edit2.Text := Query1.FieldByName ('feldname_2').AsString; Edit3.Text := Query1.FieldByName ('feldname_3').AsString; end; |
Re: Daten aus Listbox auf Editfelder übertragen??
Warum die Query ? MIt Hilfe eines Datasets würde man ganz einfach sagen :
Delphi-Quellcode:
Und beim Einfügen, tja da habe ich allerdings etwas eigenes überlegt und benutze Stored Procedures, damit die DB mir die Arbeit übernimmt zu überlegen, ob ein INSERT oder ein UPDATE nötig ist.
DataSet1.Delete;
Im Prinzip ginge es aber so :
Delphi-Quellcode:
DataSet1.Insert;
DataSet1.FieldByName ('FELDNAME').value := Edit1.Text; |
Re: Daten aus Listbox auf Editfelder übertragen??
Ich danke euch erstmal!
@sharky Dein Code funzt vom feinsten, ich musste jedoch die das[ListBox1.ItemIndex]; umändern, das hier immer nur der erste datensatz angezeigt wird, nicht der selektierte. @Hansa vielen dank erstmal für den tipp, leider funktiniert bei mir noch nicht richtig, es kommt immer die fehlermeldung, dass die tabelle schreibgeschützt sei beim dragover. Ich habe alle queries und tables geöffnet ... eigentlich sollte das doch funzen oda? PLautzer |
Re: Daten aus Listbox auf Editfelder übertragen??
Zitat:
Beispiel AfterScroll (Du kannst da natürlich was beliebiges machen, z.b. Edit1.Text := ...):
Delphi-Quellcode:
Beispiel DataLink:
//------------------------------------------------------------------------
procedure TfrmSendKopfListe.tblSendKopfAfterScroll(DataSet: TDataSet); //------------------------------------------------------------------------ // Aktivieren oder deaktivieren bestimmter Buttons //------------------------------------------------------------------------ begin with dsSendKopf.DataSet do begin if FieldByName('Status').AsString = '' then begin // Bei leerem Status ist Fertig aktiv btnBuchen.Enabled := true; end else begin btnBuchen.Enabled := false; end; end; end;
Delphi-Quellcode:
// Deklaration
// ----------- DataLink : TFieldDataLink; // Erzeugung & Initialisierung // --------------------------- DataLink := TFieldDataLink.Create; DataLink.Control := edtFrmEingabe; // Der Event wird aufgerufen, wenn sich an DataSource.FieldName was ändert DataLink.OnDataChange := edtFrmEingabeEnter; if DataSource <> nil then begin DataLink.DataSource := Datasource; DataLink.FieldName := DataFieldName; end else begin DataLink.DataSource := ListSource; DataLink.FieldName := ListDataName; end; // Löschen !!! // ----------- DataLink.Free; DataLink := nil; |
Re: Daten aus Listbox auf Editfelder übertragen??
@union
danke erstmal, ich muss aber ehrlich sagen, dass ich zur zeit nicht weiß wo dein script einsetzen soll. Ich habe die Idee von Sharky übernommen, die einfach und gut, aber vielleicht könntest du ja mal den Vorteil deines Codes kurz erläutern, dann versteh ich das vielleicht besser. Mein problem bleibt jedoch das Löschen bzw. das Einfügen der daten: Wenn ich Hansa richtig verstanden habe dann müsste das so gehen:
Delphi-Quellcode:
Da kommt jedoch nun die Fehlermeldung : 'Ungültiger Datentyp'
(Sender AS TListBox).Items.Add(Items[f]);
(Sender As Tquery).DataSource.DataSet.insert; (Source AS TListBox).Items.Delete(f); (Source AS Tquery).DataSource.DataSet.Delete; What to do? Plautzer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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 by Thomas Breitkreuz