Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten aus Listbox auf Editfelder übertragen?? (https://www.delphipraxis.net/26695-daten-aus-listbox-auf-editfelder-uebertragen.html)

plautzer 27. Jul 2004 21:54


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:
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;
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.

Thx im voraus,

Plautzer

mischerr 27. Jul 2004 23:26

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:
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;
Grüsse!

[edit=r_kerber]Code- durch Delphi-Tags ersetzt. Mfg, r_kerber[/edit]

plautzer 28. Jul 2004 15:07

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:
(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;
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.
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

plautzer 29. Jul 2004 15:36

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

plautzer 31. Jul 2004 10:55

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

Sharky 31. Jul 2004 11:04

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;

Hansa 31. Jul 2004 11:09

Re: Daten aus Listbox auf Editfelder übertragen??
 
Warum die Query ? MIt Hilfe eines Datasets würde man ganz einfach sagen :
Delphi-Quellcode:
DataSet1.Delete;
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.

Im Prinzip ginge es aber so :

Delphi-Quellcode:
DataSet1.Insert;
DataSet1.FieldByName ('FELDNAME').value := Edit1.Text;

plautzer 31. Jul 2004 13:24

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

Union 31. Jul 2004 13:26

Re: Daten aus Listbox auf Editfelder übertragen??
 
Zitat:

Zitat von plautzer
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?
Plautzer

Wenn Du keine DB-Komponenten verwenden willst wie z.B. TDbEdit, dann mach das entweder über den OnAfterScroll Event des Dataset oder erzeuge einen TFieldDataLink, der die Events von DataSet und Control verbindet.

Beispiel AfterScroll (Du kannst da natürlich was beliebiges machen, z.b. Edit1.Text := ...):
Delphi-Quellcode:
//------------------------------------------------------------------------
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;
Beispiel DataLink:
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;

plautzer 31. Jul 2004 17:51

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:
                (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;
Da kommt jedoch nun die Fehlermeldung : 'Ungültiger Datentyp'

What to do?

Plautzer


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.
Seite 1 von 2  1 2      

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