![]() |
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 |
Re: Daten aus Listbox auf Editfelder übertragen??
Das AsString usw. muß zum Schluß kommen.
|
Re: Daten aus Listbox auf Editfelder übertragen??
Was denn für ein asstring?
Kannst du das mal näher erläutern, da ich keine Ahnung habe wo da überhaupt ein asstring vorkommen soll. Plautzer |
Re: Daten aus Listbox auf Editfelder übertragen??
Ich denke, du orientierst dich an Sharkys Beispiel. Da ist ein "AsString". Es gibt auch noch AsFloat usw. Mein Beitrag war auch eher gedacht, dich zu bewegen in der Hilfe etwas genauer nachzulesen. Ein Typ in Delphi ist nicht unbedingt gleichzusetzen mit einem Typ in der Datenbank.
|
Re: Daten aus Listbox auf Editfelder übertragen??
...mit dem code von sharky hatte ich eigentlich das problem mit dem Editfeldern den gelöst. Ich glaube du hattes versucht mir zu erklären wie das mit den Speichern bzw. löschen der daten funktiniert.
Ich bin ein bisschen verwirrt, da ich nicht weiß oder mir nicht vorstellen kann wie man das nur mit der datasource.dataset bewerkstelligen kann. Das speichern habe ich versucht über die tabelle zu lösen:
Delphi-Quellcode:
(sender as ttable).open; (sender as ttable).Edit; (sender as ttable).Insert; (sender as ttable).FieldByName('Gruppe').Asstring:=(Sender AS TListBox).Items[n]; (sender as ttable).Post; (sender as ttable).Refresh; und das löschen wollte ich so lösen:
Delphi-Quellcode:
Jedoch kommt beim löschen immer die fehlermeldung, das es das feld t nicht gibt obwohl es vorhanden ist.
try
query1.Close; query1.SQL.Clear; query1.SQL.Add('Delete from untergruppe.db where Untergruppe = ' + t); query1.open; except Showmessage('...'); end; Ich würde wirklich gern mal wissen wie man das mit hilfen eines datasets löst.Könntest du das mal bitte kurz erläutern oda gibt dafür ein gutes tut? Thx, Plautzer |
Re: Daten aus Listbox auf Editfelder übertragen??
Na dann gebe ich auch mal meinen Senf dazu:
Ich muss zugeben ich habe nicht alles gelesen, aber vielleicht hilfts ja trotzdem.
Delphi-Quellcode:
löscht den Datensatz, ein Fehler düfte eigentlich nicht auftreten. Löschen und einfügen, finde ich mit Table leichter zu machen. Mit Query finde ich ist das alles komplizierter, ich würde halt, wenn du's brauchst beides benutzten.
Table1.Delete;
Gruß DelphiFreund |
Re: Daten aus Listbox auf Editfelder übertragen??
Hai,
ein einfaches Query1.Delete macht das selbe ;-) |
Re: Daten aus Listbox auf Editfelder übertragen??
Das es das gibt ist mir schon bewusst,
ich weiß eben bloß nicht wie ich das anwenden soll. Wenn ich nur query.delete schreibe dann kommt die fehlermeldung, dass die qúery schreibgeschützt sei. Zudem will ich ja eine ganze reihe an einer bestimmten stelle in der tabelle löschen, darum hatte ich ja auch gedacht das ich das mit einen sql befehle machen sollte. Das nächste problem habe ich auch mit dem insert und dem update. ich habe die editfelder, wo name, strasse etc. drin stehen. Per click sollen dann die daten eingefügt buw upgedatet werden. so hatte ich mit das gedacht:
Delphi-Quellcode:
t:=edit5.Text;
with listbox1 do begin for I := 0 to Items.Count - 1 do if Selected[I] then begin o:=ListBox1.Items[i]; query2.Close; query2.SQL.clear; query2.SQL.add('update Gruppe.db set name =: ' + t + 'where =:' + o); query2.Open; end; t ist einfach der text der in feld 'name' eingetragen werden soll und o gibt die stelle an. Funzt aber auch nicht. Könnte jemand mal ein simples beispiel geben wie ein funktioierden code mit delete und insert aussieht? Ich wäre echt dankbar dafür. Plautzer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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