![]() |
Datenbank: MsSQL • Version: 2005 • Zugriff über: ADO
Einträge aus Datenbank an Variable übergeben
Hallo!
Ich habe folgendes Problem und zwar trage ich Werte von 4 Editfeldern mittels Button der folgenden Code enthält:
Delphi-Quellcode:
Jetzt habe ich einen Lesen Button und er soll dann nach dem was in edit_anumber.Text drinnen steht filtern und mir dann edit_setpfad.Text befüllen.
ADOConnection1.ConnectionString:=
xxxx ADOConnection1.Open; Try //ADOQuery1.Active := True; ADOQuery1.SQL.Text := 'INSERT INTO IDAUFTRAG (Pfad, Auftragsnummer) VALUES ('#39''+edit_setpfad.Text+''#39','#39''+edit_anumber.Text+''#39')'; ADOQuery1.Open; except on E : Exception do begin MessageDlg('Eingetragen!', mtInformation, [mbOK], 0); end; end; ADOQuery1.Close; ADOConnection1.Close; edit_setpfad.Text := ''; edit_anumber.Text := ''; |
AW: Einträge aus Datenbank an Variable übergeben
Zunächst einmal solltest Du Deine Statements parametrisieren und beim Eintragen/Ändern von Daten ExecSQL statt Open verwenden. Und was ist das Problem? Eine weitere Query mit einer entsprechend parametrisierten SQL-Abfrage, Parameter setzen, öffnen (diesmal mit Open *g*), auslesen und ermittelten Wert dem Edit.Text zuweisen.
|
AW: Einträge aus Datenbank an Variable übergeben
Das parametrisieren ist wichtig, sonst ist eine Anwendung anfällig für SQL-Injections!
Sicherheitslücke! |
AW: Einträge aus Datenbank an Variable übergeben
Das Problem is, das ich nicht weiss was ich ADOQuery1.SQL.Text übergeben muss damit ich das filtern kann was ich suche.. und dann die übergabe mache.
Sry.. ich bin ein Anfänger in diese Gebiet.. was meint ihr mit parametrisieren.. mfg |
AW: Einträge aus Datenbank an Variable übergeben
so kannst du deine Query parametrisieren...
Code:
und so bekommst du deine Daten wieder raus:
ADOQuery1.SQL.Text := 'INSERT INTO IDAUFTRAG (Pfad, Auftragsnummer) VALUES (:pfad, :nummer)';
ADOQuery1.ParamByName('pfad').AsString := deinpfad ADOQuery1.ParamByName('nummer').AsInteger := 1 ADOQuery1.Execute // oder .ExecSQL;
Code:
ADOQuery1.SQL.Text := 'select * from IDAUFTRAG where PFAD = :PFAD'; // oder Suche mit PFAD like :PFAD
ADOquery1.ParamByName('PFAD').AsString := DeinSuchPfad; ADOQuery1.Open; if ADOQuery1.Eof then begin // nichts gefunden end else begin // wir haben's end; |
AW: Einträge aus Datenbank an Variable übergeben
Bei den ADO-Komponenten sieht das Befüllen der Parameter geringfügig anderst aus:
Delphi-Quellcode:
Im Gegensatz zu TQuery besitzt TAdoQuery ein eingebettetes Unterobjekt namens "Parameters".
ADOQuery1.SQL.Text := 'select * from IDAUFTRAG where PFAD = :PFAD'; // oder Suche mit PFAD like :PFAD
ADOquery1.Parameters.ParamValues['PFAD'] := DeinSuchPfad; ADOQuery1.Open; Das Prinzip der Parameter bleibt aber gleich. |
AW: Einträge aus Datenbank an Variable übergeben
Versteh ich nicht...
Delphi-Quellcode:
Es wird nichts übergeben --> Fehler bei Open
ADOQuery1.SQL.Text := 'select Pfad from AFSSAuftraege where Würthnummer like = '+edit_wnumber.Text+')';
ADOQuery1.Open; DeinSuchPfad := ADOQuery1.ParamByName('#39'+edit_wnumber.Text+'#39').AsString; Was ich will is das beider Spalte Pfad von der Tabelle AFSSAuftraege die Würthnummer die in der selben Zeile steht als string in ein Edit feld schreiben |
AW: Einträge aus Datenbank an Variable übergeben
Entweder like oder =, aber nicht beides gleichzeitig.
Delphi-Quellcode:
ADOQuery1.SQL.Text := 'select Pfad from AFSSAuftraege where Würthnummer like :param)';
ADOQuery1.Parameters.ParamByName('param').Value := edit_wnumber.Text; ADOQuery1.Open; if not ADOQuery1.EOF then DeinSuchPfad := ADOQuery1.FieldByName('Pfad').AsString; |
AW: Einträge aus Datenbank an Variable übergeben
Okay habs jetzt mittlerweile verstanden, aber wenn ich jetzt meine Einträge parametrisiere bekomme ich beim ausführen meines Programmes einen Error bei folgender Programmzeile:
Delphi-Quellcode:
Error:
ADOQuery1.ParamByName('pfad').AsString := edit_setpfad.Text;
Undeclearded identifier: 'ParamByName' Missing operator or semicolon Auch wenn ich schreibe:
Delphi-Quellcode:
kommt dann wieder ein Error: Undeclearded identifier: 'AsString'
ADOQuery1.Parameters.ParamByName('pfad').AsString := edit_setpfad.Text;
|
AW: Einträge aus Datenbank an Variable übergeben
So wie in #8 von DeddyH schon gezeigt:
Parameter:
Delphi-Quellcode:
ADOQuery1.Parameters.ParamByName('pfad').Value:=edit_setpfad.Text;
Inhalt:
Delphi-Quellcode:
edit_setpfad.Text:=ADOQuery1.FieldByName('pfad').AsString;
|
AW: Einträge aus Datenbank an Variable übergeben
@omata das is mir schon klar.. aber dafür muss ich ja die Einträge parametrisieren und da kommt halt da Fehler
|
AW: Einträge aus Datenbank an Variable übergeben
Zitat:
So ähnlich ergibt beim programmieren immer Fehler BTW es gibt einen Unterschied zwischen Programm ausführen und Programm compilieren. Ausführen geht nur, wenn das Compilieren erfolgreich war. Ich vermute aber, das das Compilieren schon fehlschlägt. Also auch bei der Fehlerbeschreibung ist eine ungenaue Beschreibung kontraproduktiv |
AW: Einträge aus Datenbank an Variable übergeben
Richtig beim Compilier kommt schon der Fehler und ich habe es genau so geschrieben wie die einen mir es gepostet haben.
Das Problem ist das ich halt beim Parametrisieren die Fehlermeldung erhalte (wie schon gepostet) wenn ich aber:
Delphi-Quellcode:
schreibe, dann kann er es compilieren. Jedoch funktioniert der Abruf/Lesen nicht, da die Parameter nicht parametrisiert sind.
ADOQuery1.SQL.Text := 'INSERT INTO AFSSAuftraege (Würthnummer, Auftragsnummer, Pfad, XMLNummer) VALUES ('#39''+edit_wnumber.Text+''#39','#39''+edit_anumber.Text+''#39','#39''+edit_setpfad.Text+''#39','#39''+edit_xmlnummer.Text+''#39')';
ADOQuery1.Open; Das einzige was ich wissen will ist wie die parametrisierung der Parameter funktioniert.
Delphi-Quellcode:
.AsString is undeclared
ADOQuery1.Parameters.ParamByName('wuerthnummer').AsString := edit_wnumber.Text;
|
AW: Einträge aus Datenbank an Variable übergeben
Finde den Unterschied und du hast den Fehler
Delphi-Quellcode:
und
// Vorschlag von DeddyH
ADOQuery1.Parameters.ParamByName('pfad').Value:=edit_setpfad.Text;
Delphi-Quellcode:
// Deine Variante
ADOQuery1.Parameters.ParamByName('wuerthnummer').AsString := edit_wnumber.Text; |
AW: Einträge aus Datenbank an Variable übergeben
Also wenn mich nicht alles täuscht dan hast du dich bisschen verschaut. Und zwar die Zeile:
Delphi-Quellcode:
in dem Kontext:
ADOQuery1.Parameters.ParamByName('param').Value := edit_wnumber.Text;
Delphi-Quellcode:
Ist dazu da das ich nach dem Eintrag edit_wbumber.Text suche und dann den Pfad als String in eine Variable schreibe
ADOQuery1.SQL.Text := 'select Pfad from AFSSAuftraege where Würthnummer like :param)';
ADOQuery1.Parameters.ParamByName('param').Value := edit_wnumber.Text; ADOQuery1.Open; if not ADOQuery1.EOF then DeinSuchPfad := ADOQuery1.FieldByName('Pfad').AsString; Weiter oben im Verlauf hat er ja auch erwähnt das ich meine einträge Parametrisieren muss, und diese Antwort von Ihm gilt nur zum Lesen der Einträge achja, schlecki hat mir den code geliefert... |
AW: Einträge aus Datenbank an Variable übergeben
:shock: wieso hab ich mich verschaut?
Lies dir bitte deine Beiträge nochmal durch und du wirst feststellen, dass ich mich auf die Codezeile beziehe, die du beschrieben hast. |
AW: Einträge aus Datenbank an Variable übergeben
Also.. wenn ich das Richtig verstanden haben.. dann kann ich mit
Delphi-Quellcode:
meine einträge parametrisieren nur brauche ich am schluss ein ADOQuery1.ExecSQL;
ADOQuery1.SQL.Text := 'INSERT INTO AFSSAuftraege (Würthnummer, Auftragsnummer, Pfad, XMLNummer) VALUES (:würthnummer, :auftragsnummer, :pfad, :xmlnummer)';
ADOQuery1.Parameters.ParamByName('würthnummer').Value := edit_wnumber.Text; ... und beim lesen ein ADOQuery1.Open; -->??? |
AW: Einträge aus Datenbank an Variable übergeben
Ja, wobei die Umlaute im Feldnamen/paramter u.U. Probleme bereiten könnten.
|
AW: Einträge aus Datenbank an Variable übergeben
Zitat:
Mir scheint, du weißt nicht genau, wie du die SQL-Befehle anwenden sollst? Insert - schreibt neue Datensätze in die Tabelle - verwende hier ADOQuery.ExecSQL, es wird kein ResultSet zurückgeliefert Update - aktualisiert einen oder mehrere Datensätze - rest wie bei Insert Select - selektiert Daten. verwende hier ADOQuery.Open und du bekommst ein ResultSet, welches du dann weiter verarbeiten kannst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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-2025 by Thomas Breitkreuz