AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten aus Listbox auf Editfelder übertragen??
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus Listbox auf Editfelder übertragen??

Ein Thema von plautzer · begonnen am 27. Jul 2004 · letzter Beitrag vom 2. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#1

Daten aus Listbox auf Editfelder übertragen??

  Alt 27. Jul 2004, 21:54
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
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 27. Jul 2004, 23:26
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]
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#3

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 28. Jul 2004, 15:07
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
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#4

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 29. Jul 2004, 15:36
... 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
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#5

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 31. Jul 2004, 10:55
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 31. Jul 2004, 11:04
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 31. Jul 2004, 11:09
Warum die Query ? MIt Hilfe eines Datasets würde man ganz einfach sagen : 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;
Gruß
Hansa
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#8

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 31. Jul 2004, 13:24
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
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 31. Jul 2004, 13:26
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;
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#10

Re: Daten aus Listbox auf Editfelder übertragen??

  Alt 31. Jul 2004, 17:51
@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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:06 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