AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten aus einem MySQL Server in Editfeld ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus einem MySQL Server in Editfeld ausgeben

Ein Thema von Ykcim · begonnen am 14. Mai 2007 · letzter Beitrag vom 4. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#1

Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 14. Mai 2007, 23:59
Datenbank: MySQL • Version: 5 • Zugriff über: MySQL.pas
Hallo zusammen,

ich bin en absoluter Newby und brauche mal dringend Eure Hilfe.
Ich möchte die Daten aus einer SQL Abfrage in ein Editfeld zurückgeben. Also, wenn beispielweise ein Lieferant ausgewählt wird, sollen alle anderen Edit Felder ausgefüllt werden. Also über ein "Select" Query und dann einem Edit-Feld eine bestimmte Zelle zuweisen. Ich habe jetzt schon stundenlang im Internet gesucht - ohne Erfolg... Ach ja, zu meinem ersten Satz: Sicherleich könntet Ihr mir fast alle so antworten, dass ich KEIN Wort verstehe - ich bin ein Newby. Bitte helft mir - ich komme nicht weiter...

Vielen Dank
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 15. Mai 2007, 07:25
Hi,

ist zwar mit einer ADS Datenbanke mal entstanden aber das sollte dir vlt. weiterhelfen. Ist auch nur ein Ausschnitt!

Delphi-Quellcode:
...
with DatenModul.AdsQuery1 do
  begin
    Active := False;
    SQL.Text := 'SELECT * FROM RawMaterial WHERE Number=' + IntToStr(ANumber);
    Active := True;
    EdtBarcode.Text := FieldByName('BarCode').AsString;
    EdtTitle.Text := FieldByName('Benennung01').AsString;
    EdtTitle2.Text := FieldByName('Benennung02').AsString;
    CatId1 := FieldByName('Kategorie_Zahl').AsString;
    CatId2 := FieldByName('Kategorie_Zahl2').AsString;
    if ( FieldByName('Hersteller_Nr').AsInteger = -1 ) then
    begin
      EdtSupplierNo.Text := '';
    end
    else
    begin
    ...
    end;
  end;
end;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 15. Mai 2007, 08:41
Vielen Dank für die Antwort!

Leider hilft es mir noch nicht weiter. Ich würde so etwas wie die nachstehende FillGrid Procedure benötigen...
Aus Deinem Code kann ich nicht erkennen, wie DU die Daten aus der DB holst bzw. dem Edit-Feld dann zuordnest. Bin wirklich um die Lösung verlegen!

Nachfolgend der FillGrid Code, mit dem ein StringGrid mit Daten "befüllt" wird:

Delphi-Quellcode:
procedure FillGrid(SG: TStringGrid; Cols: TCols; Rows: TRows);
var
  i, j : Integer;
begin
  SG.ColCount := 0;
  SG.RowCount := 0;
  if Assigned(Rows) then
  begin
    // Wir brauchen eine Zeile mehr für die Spaltenüberschriften
    SG.RowCount := length(Rows[0]) + 1;
    SG.ColCount := length(Cols);
    SG.FixedRows := 0;
    // Spaltenüberschriften in die erste Zeile schreiben
    for i := 0 to length(Cols) - 1 do
    begin
      SG.Cols[i].Add(Cols[i]);
      SG.Cells[i, 0] := Cols[i];
    end;
    // zwei-dimensionales Zeilen-Array in den Zellen ausgeben
    for i := 0 to length(Cols) - 1 do
    begin
      for j := 0 to length(Rows[0]) - 1 do
      begin
        SG.Cells[i, j + 1] := Rows[i, j];
      end;
    end;
  end;
end;
Ich hatte versucht, diese Procedure anzupassen, in dem ich folgende Änderungen vorgenommen hatte:


Delphi-Quellcode:
procedure FillGrid(ED : TEdit; Cols: TCols; Rows: TRows); //Damit ich ein Edit-Feld übergeben kann
var
  i, j : Integer;
  SG: TStringGrid; // Damit die eigentliche Procedure normal läuft und ich aus SG die
                      // entsprechende Werte holen kann...
begin
  SG.ColCount := 0;
  SG.RowCount := 0;
  if Assigned(Rows) then
  begin
    // Wir brauchen eine Zeile mehr für die Spaltenüberschriften
    SG.RowCount := length(Rows[0]) + 1;
    SG.ColCount := length(Cols);
    SG.FixedRows := 0;
    // Spaltenüberschriften in die erste Zeile schreiben
    for i := 0 to length(Cols) - 1 do
    begin
      SG.Cols[i].Add(Cols[i]);
      SG.Cells[i, 0] := Cols[i];
    end;
    // zwei-dimensionales Zeilen-Array in den Zellen ausgeben
    for i := 0 to length(Cols) - 1 do
    begin
      for j := 0 to length(Rows[0]) - 1 do
      begin
        SG.Cells[i, j + 1] := Rows[i, j];
        ED.Text:=SGCells[0,0]; //Um jetzt im übergebenden Edit-Feld EINEN Wert zu setzten...
      end;
    end;
  end;
end;
Vielen Dank Euch im Voraus
Patrick
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 15. Mai 2007, 09:40
Hallo,

so wird das nichts. Du kannst nicht einfach SG zu einer lokalen Variable machen und dann ohne Initialisierung auf diese zugreifen. Das willst du wahrscheinlich auch gar nicht. Auf deiner Form hast du doch schon ein Grid. Darin möchtest du Datensätze aus einer MySQL-Tabelle anzeigen?

Und über ein Edit möchtest du ein SELECT-Statement eingeben, welches ausgeführt werden soll um die Daten für das Grid zu liefern? Oder kannst du dein Vorgaben besser beschreiben?

Grüße vom marabu
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 15. Mai 2007, 10:26
Hallo Marabu,

vielen Dank für Deine Antwort! Ich merke schon, dass ich mich mit meiner Ahnungslosigkeit gerade oute...

Ich habe ein Form, in dem KEIN StringGrid vorhanden ist. Ich möchte Edit-Felder als Ausgabewerkzeug nutzen. Zum Besispiel wenn ich einen Lieferanten auswähle, dass die Edit-Felder Straße, PLZ, Ort, Branche etc. ausgefüllt werdenm mit Daten aus der DB. Dabei geht es mir nicht um das Query, sondern um die Schnittstelle zwischen MySQL und Delphi, mit der ich Edit-Felder befüllen.

Ich hoffe, dass ich mich verständlich ausgedrückt habe.

Vielen Dank im Voraus
Patrick
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 15. Mai 2007, 11:39
Hi!

ich habe auch mal ein kleines Programm geschrieben, das sich mit einer
mySQL-DB 4.1 verbindet; dazu verwendete ich eine mysql.pas, die eine
Schnittstelle zur libmySQL.dll liefert.
(mysql.pas wurde von Matthias Fichtner übersetzt, zu finden bei torry.net etc.)


Nachdem du diese Unit eingebunden hast, kannst du folgendermaßen die
Verbindung herstellen:


Delphi-Quellcode:
{ liest die Einstellungen aus einer INI-Datei }

procedure TFormMain.Connect;
var
  Ini: TIniFile;
begin
  try
    Ini:= TIniFile.Create(extractfilepath(Application.ExeName) + IniFilename);
    with mySQLDB do
    begin
      FMysql.Host := Ini.ReadString('Connection', 'Host', 'localhost');
      FMysql.port := Ini.ReadInteger('Connection', 'Port', 3306);
      FMysql.user := Ini.ReadString('Connection', 'User', 'root');
      FMysql.Db := Ini.ReadString('Connection', 'DB', 'DemoDB');
      FMysql.password := Ini.ReadString('Connection', 'Password', '');
      FMysql.UnixSocket := '';
      FMysql.UseNamedPipe := false;
      FMysql.UseSSL := false;
      FMysql.Compress := true;
      FMysql.TrySockets := false;
    end;
  finally
    Ini.Free;
  end;
end;
Dann eine Abfrage erstellen und das das Ergebnis wie gewünscht verarbeiten:
Delphi-Quellcode:

      if FMysql.Connect then
      begin
        { hier erfolgt die SELECT-Abfrage }
        with FResult do
        begin
          { Das Ergebnis in die Edit-Felder füllen }
          edFirmenname.Text:= FieldByName('Firmenname').AsString;
          { und weitere Felder ... } 
        end;
      end else
        ShowMessage('Fehler beim Verbinden: '+FMysql.LastError);
Ich hatte damals auch ein Tutorial dafür im Internet gefunden,
weiß die Adresse aber leider nicht mehr. Suche einfach mal...


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 15. Mai 2007, 22:19
Hallo Photo,

vielen Dank für Deine Antwort!

Eine Verbindung zu MySQL habe ich. Wenn ich eine Abfrage ausführe, bekomme ich auch die Ergebnisse in einem StringGrid ausgegeben(Die Procedure hatte ich gefunden). Was ich benötige und leider noch nicht gefunden habe, ist die Möglichkeit, ein einzelnen Wert, den meine Abfrage zurückliefert in ein Edit-Feld zu schreiben.

Das müsste doch für die meisten ganz einfache Routine sein. Könnt Ihr mir bitte weiterhelfen?

Danke
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 15. Mai 2007, 22:33
Hast du dir eigentlich mal meinen Beitrag (#2) angesehen? Da schreibe ich in Editfelder rein!!!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 15. Mai 2007, 22:41
HI Mackhack,

ich hatte mir DeinenBeitrag durchgelesen, aber leider nicht ganz nachvollziehen könne (ich Newby). Bitte sag mir doch, was BarCode ist? Heißt so die Spalte, der SQL DB?
EdtBarcode.Text := FieldByName('BarCode').AsString; Ich habe es ausprobiert, aber ich bekomme die Fehlermeldung: Undeclared identifer: fieldbyname

Wo habe ich nicht zu ende gedacht?

Danke für Deine Gedult
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Daten aus einem MySQL Server in Editfeld ausgeben

  Alt 16. Mai 2007, 02:36
Hi,

also das .AsString ist eine Property vom TADSQuery was du oben siehst zwischen dem with und do. Das with do habe ich deshalb damit ich nicht vor jedem FieldByParam DatenModul.AdsQuery1 schreiben muss sondern Code und damit Tipparbeit sparen kann. Also zieh mal eine TQuery auf deine Form und dann sollte das klappen!

Wenn nicht frag einfach nochmal nach dazu sind wir ja in der DP!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  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 20:21 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