Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankfeld in ein TEdit (https://www.delphipraxis.net/145784-datenbankfeld-ein-tedit.html)

PhilmacFLy 8. Jan 2010 09:28

Datenbank: MS Accsess • Zugriff über: ADO

Datenbankfeld in ein TEdit
 
Moin ihr DP'ler

Mein Problem ist folgendes
ich hab hier einen Leasing Angebotsrechner in Delphi und der Soll aus einer Datenbank (Mailing) mit Mailingdaten 4 auslesen und die in 4 TEdit eintragen, aber nur wenn der Benutzer eine ID zum Mailing Adressat eingibt und einen entsprechenden Button betätigt.
Meine Frage ist nun wie bekomme ich die 4 Felder (Name, Anrede, Straße, Ort) aus der Tabelle (Adressebliste Antworten) in die 4 Editfelder?
PS: Nein ich kann den Tabellen Namen nicht auf einen ohne Leerzeichen ändern, der ist fest ins System eingebunden.

DeddyH 8. Jan 2010 10:08

Re: Datenbankfeld in ein TEdit
 
Wo genau hakt es denn? Wie Du die Daten bekommst oder wie Du die in den Edits anzeigen kannst?

PhilmacFLy 8. Jan 2010 10:12

Re: Datenbankfeld in ein TEdit
 
daran wie ich die Daten bekomme weil wie ichs in die Edits bekomm dürfte ja dann nur noch ein einfaches := lösen

Grolle 8. Jan 2010 10:17

Re: Datenbankfeld in ein TEdit
 
Hi,

benutzt du eine Query? Dann ungefähr so:
Delphi-Quellcode:
Query.SQL.Clear;
Query.SQL.Add('SELECT * FROM documents WHERE id= :id');
Query.ParamByName('id').AsInteger := inVal;
Query.Open;
if not documentsQuery.IsEmpty then
begin
  Edit1.Text := Query.FieldByName('name').AsString;
  ...
Viele Grüße ...

nahpets 8. Jan 2010 10:18

Re: Datenbankfeld in ein TEdit
 
Hallo,

bei einem
SQL-Code:
Select * from Tabelle
kannst Du um den Tabellennamen Hochkommata nutzen, leider weiß ich aus dem Ärmel heraus nicht, welche Access jetzt da gerade haben will. Eine der folgenden Varianten könnte aber funktionieren:
SQL-Code:
Select * from 'Adressebliste Antworten'
Select * from "Adressebliste Antworten"
Select * from ´Adressebliste Antworten´
Select * from `Adressebliste Antworten`

PhilmacFLy 8. Jan 2010 10:19

Re: Datenbankfeld in ein TEdit
 
es sind [] bei Access das hab ich schon herrausgefunden
bzw Matze wars :)

DeddyH 8. Jan 2010 10:22

Re: Datenbankfeld in ein TEdit
 
Ich würde mich da allerdings auf die wirklich benötigten Felder beschränken (macht zwar unter Access wohl nicht wirklich einen Unterschied, aber es ist immer besser, sich das gleich anzugewöhnen).
SQL-Code:
SELECT Name, Anrede, Straße, Ort
FROM Tabelle
WHERE ID = :id

PhilmacFLy 8. Jan 2010 10:45

Re: Datenbankfeld in ein TEdit
 
ich habs jetzt so
Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.Parameters.ParamByName('id').Value := edparam.Text;
ADOQuery1.SQL.Add('SELECT Anrede FROM [Adressenliste Antworten] WHERE NR= :id');
ADOQuery1.Open;
Wegen Ado Query und funktioniert, also vielen Dank nochmal

PhilmacFLy 9. Jan 2010 13:52

Re: Datenbankfeld in ein TEdit
 
Jetzt hab ich ein anderes Problem und zwar wenn ich das 2te mal auslesen will kommt folgender Fehler:
Delphi-Quellcode:
Erste Zufalls-Exception bei $7C812AEB. Exception-Klasse EDatabaseError mit Meldung 'ADOQuery1: Parameter 'id' nicht gefunden'. Prozess mtd_leasing.exe (1784)
Hier mal der Code dazu
Delphi-Quellcode:
procedure TForm3.bttauslesenClick(Sender: TObject);
var
an, ges, vname, nname, str, plz, ort: String;
begin
bttauslesen.Caption := 'Bitte warten';
bttauslesen.Enabled := false;
  if
    ping('walhall')
  then
    begin
      ADOConnection1.Connected := true;
      ADOQuery1.SQL.Clear;
      ADOQuery1.Parameters.ParamByName('id').Value := edparam.Text; //Markierte Zeile
      ADOQuery1.SQL.Add('SELECT Anrede, Geschlecht, Vorname, Nachname, PLZ, Straße, Ort FROM [Adressenliste Antworten] WHERE NR= :id');
      ADOQuery1.Open;
      if not ADOQuery1.IsEmpty then
      begin
        an := ADOQuery1.FieldByName('Anrede').AsString;
        ges := ADOQuery1.FieldByName('Geschlecht').AsString;
        vname := ADOQuery1.FieldByName('Vorname').AsString;
        nname := ADOQuery1.FieldByName('Nachname').AsString;
        plz := ADOQuery1.FieldByName('PLZ').AsString;
        str := ADOQuery1.FieldByName('Straße').AsString;
        ort := ADOQuery1.FieldByName('Ort').AsString;
        AdoQuery1.Close;
        AdoConnection1.Connected := false;
        Edpraxis.Text := an;
        if vname = '' then
        edname.Text := ges + ' ' + nname
        else
        edname.Text := vname + ' ' + nname;
        edstrasse.Text := str;
        edadresse.Text := plz + ' ' + ort;
        bttauslesen.Caption := 'Auslesen';
        bttauslesen.Enabled := true;
      end
      else
        begin
          Application.MessageBox('ID nicht vorhanden', 'Fehler', MB_ok or MB_iconerror);
          bttauslesen.Caption := 'Auslesen';
          bttauslesen.Enabled := true;
        end;
    end
  else
    if Application.MessageBox('Keine Verbindung zum Server möglich', 'Fehler', mb_iconerror or MB_RETRYCANCEL) = IDRETRY then
    bttauslesen.Click
    else
      begin
        bttauslesen.Caption := 'Auslesen';
        bttauslesen.Enabled := true;
      end;
end;

mkinzler 9. Jan 2010 13:57

Re: Datenbankfeld in ein TEdit
 
Reihenfolge falsch:
Delphi-Quellcode:
      ADOQuery1.SQL.Add('SELECT Anrede, Geschlecht, Vorname, Nachname, PLZ, Straße, Ort FROM [Adressenliste Antworten] WHERE NR= :id');

      ADOQuery1.Parameters.ParamByName('id').Value := edparam.Text; //Markierte Zeile
Btw. Die Abfrage brauchst du nur einmal setzen, beim 2. Mal reicht es den parameter neu zu belegen


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 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