![]() |
Allgemeine Fragen zu Access + Delphi
Hallo!
Also, ich habe schon vor einiger Zeit ![]() - wie macht man eine SQL abfrage, die prüft ob das zu einem Username gehörige Passwort richtig ist? Username und Passwort sind in der gleichen Access-Tabelle gespeichert. - kann mir jemand die funktionen sagen wie ich auf die tabellen bzw. einzelne felder der tabellen über eine Prozedur zugreife? also nicht mit der tabellen-navigationsleiste von delphi, sondern über eine separate prozedur, z.B. die Tabelle mit dem Inhalt der DBEdits aktualisieren? oder z.B. wie ich den Booleanwert zuweise oder die Zahl in einem Feld erhöhe? erst mal so viel.... |
Re: Allgemeine Fragen zu Access + Delphi
Hey Leute kommt schon, ich könnte echt ein bisschen holfe gebrauchen, ich muss es bis spätestens Donnerstag haben!!!!!! :( aber alleine schaffe ich das NIE IM LEBEN!!!! Schlagt vbon mir aus ein ganz neues Konzept vor, ich muss es nur irgendwie schaffen.......
|
Re: Allgemeine Fragen zu Access + Delphi
Hallo Saulo,
mit einer SELECT Anweisung holst du dir das tatsächliche Passwort:
SQL-Code:
Dieses Statement kommt in die SQL Eigenschaft einer Query Komponente.
SELECT pword FROM tabPasswoerter WHERE USER = "MrSpock"
Mit
Delphi-Quellcode:
wird die Query ausgeführt und kann dann mit
qryPwort.Open;
Delphi-Quellcode:
Ich hoffe, das hilft erst einmal ein bisschen weiter.
if qryPwort.FieldByName('pword').AsString = edPassword.Text then
{ Passwort stimmt } else { Passwort stimmt nicht }; |
Re: Allgemeine Fragen zu Access + Delphi
juhuuuu! dankeschön!!!!! endlich mal ein lichtblick :) das hat mich auf jeden fall schon ein ganzes stückchen weitergebracht :)
Danke nochmal! |
Re: Allgemeine Fragen zu Access + Delphi
hmm... mist irgendwie komm ich doch noch nicht ganz damit klar... also ich hab die SQL-Anweisung in die ADOQuery1 geschrieben (befindet sich im DataModule2) und dann folgende prozedur zur abfrage:
Code:
aber da meckert er von wegen 'UNdefinierter Bezeichner DataModule2' dasselbe auch wenn ich nur ADOQuery1 schreibe, a sich form 1 und datamodule2 in einer schnittstelle schneiden... was ist daran falsch...?
begin
qryDatamodue2.ADOQuery1.Open; if qryADOQuery1.FieldByName('passwort').AsString = form1.Edit1.Text then form1.Label1.Caption := 'richtig'; else form1.Label1.Caption := 'falsch'; end; |
Re: Allgemeine Fragen zu Access + Delphi
sorry, der quelltext lautet natürlich so:
Code:
begin
qryADOQuery1.Open; if qryADOQuery1.FieldByName('passwort').AsString = form1.Edit1.Text then form1.Label1.Caption := 'richtig'; else form1.Label1.Caption := 'falsch'; end; |
Re: Allgemeine Fragen zu Access + Delphi
Wenn datamodule2 eine Unit ist und du die auch eingeust hast sind die 'Bezeichner' nicht public und in Unit1 damit unbekannt.
:dancer2: |
Re: Allgemeine Fragen zu Access + Delphi
em.... was genau heißt das jetzt (=was muss ich machen??? :? )
|
Re: Allgemeine Fragen zu Access + Delphi
ach ja und wenns weiterhilft: hier der quelltext:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls; type TForm1 = class(TForm) DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin qryADOQuery1.Open; if qryADOQuery1.FieldByName('passwort').AsString = form1.Edit1.Text then form1.Label1.Caption := 'richtig'; else form1.Label1.Caption := 'falsch'; end; end. und das Datenmodul:
Delphi-Quellcode:
unit Unit2;
interface uses SysUtils, Classes, DB, ADODB; type TDataModule2 = class(TDataModule) ADOConnection1: TADOConnection; ADOTable1: TADOTable; DataSource1: TDataSource; DataSource2: TDataSource; ADOTable2: TADOTable; ADOTable2ID: TAutoIncField; ADOTable2Vorname: TWideStringField; ADOTable2Nachname: TWideStringField; ADOTable2GebDat: TDateTimeField; ADOTable2Adresse: TWideStringField; ADOTable2Passwort: TWideStringField; ADOQuery1: TADOQuery; private { Private-Deklarationen } public { Public-Deklarationen } end; var DataModule2: TDataModule2; implementation {$R *.dfm} end. |
Re: Allgemeine Fragen zu Access + Delphi
na toll das wars dann wohl... :? ich kriege ne 4 in informatik und kann wahrscheinlich auch mein Abi/Studium in dieser Richtung abblasen :|
Trotzdem danke die versucht haben mir zu helfen... postet aber bitte trotzdem weiter, kann sein dass ich auch noch montag abgeben kann...? :cry: |
Re: Allgemeine Fragen zu Access + Delphi
Hallo Saulo,
du solltest uns nicht dafür verantwortlich machen, wenn du ne 4 in Informatik bekommst. Die bekommst du ja nicht wegen uns, wir konnten vielleicht nur nicht helfen diese zu vermeiden. Übrigens habe ich damals an der Uni oft den Spruch gehört: "Schreibste 4 bleibste hier." :mrgreen: Nun aber zu deinem Problem. Ich hatte die Abfrage in meinem Code Schnipsel mit qryPasswort bezeichnet. Du musst natürlich den Namen nehmen, den deine Query hat. Und dieser ist nicht qryADOQuery1 sondern nur ADOQuery1 wie man in deiner Unit2 sehen kann. Deshalb findet das System den Bezeichner nicht. |
Re: Allgemeine Fragen zu Access + Delphi
Davon mal abgesehen kann er gar nicht auf die ADOQuery direkt zugreifen, da das ein Memberobjekt von DataModule2 ist, also müsste der Aufruf auf DataModule2.ADOQuery1 heissen.
Und das mit der 4... ich meine, was willst Du denn? Bei uns im Studium (Wirtschaftsinformatik) hiess es immer "4 gewinnt", denn bestanden ist bestanden ;-) .oO(Na Gut, wegen der 5 in Volkswirtschftslehre hat es mich dann rausgehen, aber shit happens)Oo. |
Re: Allgemeine Fragen zu Access + Delphi
ok danke... also jetzt funzt es zwar... aber egal was ich für ein passwort eingebe.... es wird immer als falsch erkannt :x
hier nochmal der quelltext:
Delphi-Quellcode:
ja und zu der 4: also in der oberstufe ist es schon so, dass ne 4- als minderleistung gilt... auf der uni ist es also anders? das beruhigt mich :) dennoch ändert das nix... :oops: aber egal. ist ja auch nicht grade ein leichtes fach... heute ist der rumgegangen und hat geguckt, wer was hat, dann hab ich wieder minuspunkte gekriegt weil ich mein modul nicht in einer extra-word datei hatte.... toll! aber was ich cool fand, der hatte kein Plan von ADO! (Ok, hab ich auch nicht *lol* aber mehr als der.....) :spin:
begin
DataModule2.ADOQuery1.Open; if Datamodule2.ADOQuery1.FieldByName('Passwort').AsString = form1.Edit1.Text then form1.Label1.Caption := 'richtig' else form1.Label1.Caption := 'falsch'; end; |
Re: Allgemeine Fragen zu Access + Delphi
ich würd die beiden teile der if abfrage mal noch in lowercase() packen sonst achtet er auf groß und kleinschreibung, außer du willst das
bin mir ne ganz sicher aber kannst mal noch versuchen datamodul2.adoquery1.first; nach dem open aufzurufen. ansonsten würd ich mal hergehen und mir das result der adoquery in ner showmessage() anzeigen lassen um zu schauen was du von der db zurückbekommst ansonsten müsste es so eigentlich klappen mfg Blizzard |
Re: Allgemeine Fragen zu Access + Delphi
jo danke, hab den fehler gefunden! hatte in der Query den falschen Spaltennamen angegeben... :oops:
|
Re: Allgemeine Fragen zu Access + Delphi
ach ja, und kann mir dann vielleicht jemand sagen wie ich die datensätze ansteuern kann oder navigatorleiste, also mit eigenen prozeduren? danke!
|
Re: Allgemeine Fragen zu Access + Delphi
Hallo Saulo,
zum Navigieren benutzt du die Methoden:
Delphi-Quellcode:
Mit EOF bzw. BOF stellst du fest, dass du am Ende bzw. am Anfang der Query Datenmenge angekommen bist. Mit Locate kannst du einen bestimmten Datensatz zum aktuellen Datensatz machen.
ADOQuery1.First;
ADOQuery1.Next; ADOQuery1.Prior; ADOQuery1.Last; |
Re: Allgemeine Fragen zu Access + Delphi
gut, danke... jetzt müsst ich nur noch wissen wie man einen neuen datensatz auf diese weise hinzufügt :wink:
|
Re: Allgemeine Fragen zu Access + Delphi
Hallo Saulo,
Delphi-Quellcode:
oder
ADOQuery1.Append;
Delphi-Quellcode:
ADOQuery1.Insert;
|
Re: Allgemeine Fragen zu Access + Delphi
hm... irgendwie will das mit dem insert oder append net so recht klappen... also in der query steht jetzt:
Delphi-Quellcode:
und die Prozedur dazu heißt:
SELECT * FROM TTitelaufnahme;
Delphi-Quellcode:
aber wenn ich die prozedur ausführe passiert nichts... auch der compiler meckert nicht. komische sache das mit den datenbanken.... :) und by the way: wie kann man man noch einen datensatz löschen und übernehmen (also mit methoden bzw. funktionen)?
begin
DataModule2.ADOQuery2.Open; DataModule2.ADOQuery2.insert; end; |
Re: Allgemeine Fragen zu Access + Delphi
Oh danke, habs schon... es muss nämlich nicht ADOQuery1.Next heißen sondern ADOTAble1.Next
|
Re: Allgemeine Fragen zu Access + Delphi
ein weiteres problem hat sich ergeben: ich kann jetzt nur das passwort einer bestimmten person abfragen, also:
Delphi-Quellcode:
wie kann ich stattdessen eine Variable einfügen? z.B. den Namen aus einem DBEdit-Feld?
SELECT Passwort FROM TUser WHERE User = 'Username';
|
Re: Allgemeine Fragen zu Access + Delphi
Hallo Saulo,
dazu kannst du eine parametrisierte Query benutzen. Das SQL Statement lautet in disem Fall z.B:
SQL-Code:
durch den Doppelpunkt hast du einen Parameter erzeugt. Diesesm weist du einen Wert zu, bevor du die Query ausführst:
SELECT Passwort FROM TUser WHERE User = :usr
Delphi-Quellcode:
oder du erzeugst das SQL Statement dynamisch:
ADOQuery1.ParamByName('usr').AsString := 'MrSpock';
ADOQuery1.Open;
Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT Passwort FROM TUser WHERE User ='+QuotedStr(Edit1.Text)); ADOQuery1.Open; |
Re: Allgemeine Fragen zu Access + Delphi
ok, danke! übrigens: die noten haben wir schon gekriegt dafür (4+....) aber wir müssen das programm montag noch abgeben dannw irds gebrannt und veröffentlicht... und ich möcht echt ne bombe abgeben, damit der mal sieht dass wir doch nicht son faluer haufen sind... :)
also dann die nächsten fragen: - wie heißt die methode zum aktivieren und löschen eines bestimmten nestimmte datensatzes? (das steht auch nicht in der hilfe....) - wie kann man den inhalt eines Edit-Feldes in die Tabelle schrieiben und wie einen boolean-wert der tabelle zuweisen? danke schon mal! |
Re: Allgemeine Fragen zu Access + Delphi
oh, eine paar fehler... also nochmal konkreter:
- wie heißt die methode zum aktivieren und löschen eines bestimmten datensatzes? (z.B. wenn ich den datensatz mit der ID '4' löschen möchte) - wie kann man den inhalt eines Edit-Feldes in ein Feld der Tabelle schreiben und einem feld einen boolean-wert zuweisen? und wie weiat man dem feld ein datum zu, also als welche deklaration (string, TDateTime...) oder geht das irgendwie anders bzw. genauso wie ein edit-feld zuweisen...? - wie kann ich zu einem datum n tage addieren und das in einem feld speichern? |
Re: Allgemeine Fragen zu Access + Delphi
Hallo Saulo,
wie wäre es einmal mit einem Buch zum Thema Datenbankprogrammierung? Den Datensatz mit der ID 4 löscht du mit:
SQL-Code:
oder, falls ID ein Schlüsselfeld ist, z.B. mit
DELETE FROM t_personen WHERE ID = 4
Delphi-Quellcode:
Den Inhalt eines Editfeld in die Datenbank schreiben geht mit:
if t_personen.FindKey([4]) then
t_personen.Delete;
Delphi-Quellcode:
{ Datensatz, in den eingefügt werden soll suchen }
if t_personen.FindKey([4]) then begin t_personen.Edit; t_personen.FieldByName('Inhalt').AsString := Edit1.Text; t_personen.Post; end; |
Re: Allgemeine Fragen zu Access + Delphi
Zitat:
SQL-Code:
UPDATE t_personen SET (Inhalt) = ('Text') WHERE ID = 4
|
Re: Allgemeine Fragen zu Access + Delphi
Zitat:
naja... also das mit dem GotoKey funzt irgendwie nicht... der befehl wird nicht erkannt, also 'undeclared indentifier'... woran liegts? t_personen ist doch in diesem Beispiel die tabelle oder? also in meinem Falld dann eben DataModule2.TUser |
Re: Allgemeine Fragen zu Access + Delphi
ok, dann nochmal eine letzte frage: wie implementiert man eine suchfunktion? ich würde es am liebsten in SQL machen... geht das? in delphi geht das doch irgendwie mit locate oder so....?
|
Re: Allgemeine Fragen zu Access + Delphi
hilföööööö.... :?
und noch ne frage :roll: also ich steh vor dem problem, dass ein user erst dann weiterkommt wenn er sich registriert hat, und das soll hal so laufen dass man auf ok klickt und dann ein button aktiv (alsoo enabled) wird. nur irgendiwe klappt das nicht so ganz, hier der quelltext:
Code:
der Username hat einen Primärschlüssel, deswegen soll am anfang geprüft werden ob der eingegebene schon vorhanden ist, nur irgednwie klappt das nicht ganz... liegt es daran dass die ID auch einen Primärschlüssel hat? können nicht beide einen Primärschlüssel haben? und am ende soll der weiter-butten erst aktiviert werden, wenn alle felder ausgefüllt sind. aber wenn man sich durch die ShowMessages durchgeklickt hat, wird er nach der letzten einfach aktiviert :(
function username : boolean;
begin Datamodule2.qryUser.Close; DataModule2.qryUser.SQL.Clear; DataModule2.qryUser.SQL.Add('SELECT Username FROM TUser WHERE Username =' +QuotedStr(Form3.Edit1.Text)); DataModule2.qryUser.Open; end; procedure TForm3.Button1Click(Sender: TObject); begin username; if username = true then ShowMessage('Der Username ist bereits vergeben!') else if (form3.MaskEdit1.Text = form3.MaskEdit2.Text) and (form3.MaskEdit2.Text <> '') then begin try DataModule2.TUser.Edit; DataModule2.TUser.FieldByName('Passwort').AsString := form3.MaskEdit2.text; DataModule2.TUser.FieldByName('Username').AsString := form3.Edit1.Text; DataModule2.TUser.Post; except ShowMessage('Fehler unsoo'); end; end else ShowMessage('Das Passwort wurde falsch bestätigt!'); if DataModule2.TUser.FieldByName('Vorname').AsString = '' then begin showmessage ('Bitte geben sie ihren Vornamen an!'); form3.Button3.Enabled := false; end else form3.Button3.Enabled := true; if DataModule2.TUser.FieldByName('Nachname').AsString = '' then begin showmessage ('Bitte geben sie ihren Nachnamen an!'); form3.Button3.Enabled := false; end else form3.Button3.Enabled := true; if DataModule2.TUser.FieldByName('Username').AsString = '' then begin showmessage ('Bitte geben sie einen Username an!'); form3.Button3.Enabled := false; end else form3.Button3.Enabled := true; if inttostr(DataModule2.TUser.FieldByName('Tel').AsInteger) = '' then begin showmessage ('Bitte geben sie ihre Telefonnummer an!'); form3.Button3.Enabled := false; end else form3.Button3.Enabled := true; end; procedure TForm3.Button2Click(Sender: TObject); begin form3.close; form1.show; end; |
Re: Allgemeine Fragen zu Access + Delphi
Zitat:
Ähmmm...... 1. Wo weisst Du deiner Funktion Username ein Ergebniss zu? 2. Warum rufst Du sei zweimal auf? Verstehe mich um Gotteswillen nicht falsch! Aber hast Du schon (in Delphi ) programmiert? Wenn nicht würde ich nicht unbedingt mit einer Datenbank anwendung anfangen! Da Du ja mit SQL arbeitest "lernst" Du quasi zwei Programmiersprachen gleichzeitig. Und das ist echt hart. |
Re: Allgemeine Fragen zu Access + Delphi
ja ich weiß dass ich es nicht kann, aber wie gesagt, ich brauche es für die schule, und das mit funktionen und sowas haben wir nun mal noch nicht gemacht... deswegen weiß ich ja auch nicht so genau wie das geht! und deswegen habe ich ja auch dieses forum aufgescht :) also ich habe keine ahnung wo ich der funktion ein ergebnis zuweise, muss das immer in einer variable passieren? weil ich dachte eine funktion liefert einfach einen wert der sich aus deren ausführung ergibt, und der muss nicht in einer variable gespeichert werden... ich habe keine ahnung, wie müsste es denn richtig heißen? also das soll jetzt so sein, dass bevor irgednwas gemacht wird erst geprüft werden soll ob der username vorhanden ist, mehr nicht.... und dazu soll halt diese funktion gut sein... nur wie gesagt, ich kenne mich nicht besonders gut damit aus...
|
Re: Allgemeine Fragen zu Access + Delphi
Hai Saulo,
hier ersteinmal der "wichtigste" Teil:
Delphi-Quellcode:
result enthält den Rückgabewert einer Funktion.
function username: boolean;
begin Datamodule2.qryUser.Close; DataModule2.qryUser.SQL.Clear; DataModule2.qryUser.SQL.Add('SELECT Username FROM TUser WHERE Username =' + QuotedStr(Form3.Edit1.Text)); DataModule2.qryUser.Open; if (DataModul2.qryUser.RecordCount = 0) then begin result := false; end else begin result := true; end; // Als Alternative zu der if Abfrage kannst Du auch: // result := Not (DataModul2.qryUser.RecordCount = 0); // schreiben. end; procedure TForm3.Button1Click(Sender: TObject); begin if (username) then begin ShowMessage('Der Username ist bereits vergeben!') end else begin end; Den Rest habe ich ersteinmal weg gelassen. Frage: Wie gibt der Anwender Name, Telefon usw. ein? Werden die Daten in "einfache" TEdit eingegeben? Deinen code kann man dann nämlich noch um einiges leichter und übersichtlicher machen! |
Re: Allgemeine Fragen zu Access + Delphi
Ok, danke, jetzt klappts :)
also der user gibt Vorname, Nachname, Telefon und Adresse über DBEdit-Felder ein, Passwort + Bestätigung über MaskEdit-Felder und Username über ein normales Edit-Feld.... und wie kriege ich es hin dass er button erst aktiv wird wenn wirklich alles eingegeben ist? und wie prüfe ich ob die telefonnummer richtig eingegeben ist...? so wie es jetzt da steht funzt es nicht.... |
Re: Allgemeine Fragen zu Access + Delphi
Hai Saulo,
anbei einmal etwas Code. Ich habe das Ganze ohne DBEdit-Felder gemacht weil. Alle Felder sind reine TTedits. Im FormActivate lege ich die Passwordchar für die beiden Passwort-Felder fest.
Delphi-Quellcode:
procedure TForm3.FormActivate(Sender: TObject);
begin te_Passwort.PasswordChar := '*'; te_wiederholung.PasswordChar := '*'; end; {*********************************************************} procedure TForm3.Button1Click(Sender: TObject); begin Button3.Enabled := False; if (Length(TRIM(te_Username.Text)) < 6) then begin ShowMessage('Der Benutzername muss mindestens 5 Zeichen lang sei.'); te_Username.SetFocus; Exit; end; if (Length(TRIM(te_Username.Text)) < 6) then begin ShowMessage('Das Passwort muss mindestens 5 Zeichen lang sei.'); te_Passwort.SetFocus; Exit; end; if (te_wiederholung <> te_Passwort) then begin ShowMessage('Das Passwort ist nicht richtig bestätigt.'); te_wiederholung.Text := ''; te_wiederholung.SetFocus; Exit; end; if (TRIM(te_Vorname.Text = '')) then //Diesen Block für alle übrigen Edits wiederholen. begin ShowMessage('Bitte einen Vornamen eingeben.'); te_wiederholung.SetFocus; Exit; end; Datamodule2.qryUser.Close; DataModule2.qryUser.SQL.Clear; DataModule2.qryUser.SQL.Add('SELECT Username FROM TUser WHERE Username ='+ QuotedStr(te_Username.Text)); DataModule2.qryUser.Open; if (DataModul2.qryUser.RecordCount <> 0) then begin ShowMessage('Der Username ist bereits vergeben!'); Datamodule2.qryUser.Close; end else begin with DataModule2.TUser do begin try Edit; FieldByName('Passwort').AsString := te_Passwort.Text; FieldByName('Username').AsString := te_Username.Text; FieldByName('Vorname').AsString := te_Vorname.Text; FieldByName('Name').AsString := te_Name.Text; // Hier wieder alle weiteren Felder Post; button3.Enabled := True; except Close; ShowMessage('Fehler unsoo'); end; end; end; end; Zitat:
|
Re: Allgemeine Fragen zu Access + Delphi
ok dankeschön! das hat alles soweit geklappt, aber jetzt stehe ich vor einem neuen problem: wie speichert man das ergebnis einer abfrage in eine variable? bzw. wie aktiviert man einen bestimmten datensatz? ich möchte dass jeder User mit dem Vornamen angesprochen wird, mein quelltext dazu sieht volgendermaßen aus:
Delphi-Quellcode:
bitte nicht wieder lachen :oops: ich weiß ich kanns nicht... aber irgendwie gehts doch in diese richtung oder....?
procedure TForm2.FormCreate(Sender: TObject);
var s : string; begin DataModule2.qryUser.Close; DataModule2.qryUser.SQL.Clear; DataModule2.qryUser.SQL.Add('SELECT Vorname FROM TUser WHERE Username =' +QuotedStr(form1.edit1.text)); DataModule2.qryUser.Open; s := DataModule2.TUserVorname.AsString; form2.Label1.Caption := 'Hallo '+s; end; |
Re: Allgemeine Fragen zu Access + Delphi
[quote="Saulo"]....
.... Ich lache doch überhaupt nicht! Ich wollte nur wissen was Du schon kannst um die Hilfe entsprechend aufzubauen :lol: Du bist auf dem richtigen Weg. Überlege doch mal.... Wenn du mit:
Delphi-Quellcode:
Einen Wert in die Tabelle schreibst kannst Du ihn mit:
FieldByName('Passwort').AsString := te_Passwort.Text;
Delphi-Quellcode:
auslesen.
DataModule2.qryUser.Close;
DataModule2.qryUser.SQL.Clear; DataModule2.qryUser.SQL.Add('SELECT Vorname, Name FROM TUser WHERE Username =' +QuotedStr(form1.edit1.text)); DataModule2.qryUser.Open; s := DataModule2.qryUser.FieldByName('Vorname').AsString + ' ' + DataModule2.qryUser.FieldByName('Name').AsString; form2.Label1.Caption := 'Hallo '+s; EDIT: Kleinen Fehler im Code behoben |
Re: Allgemeine Fragen zu Access + Delphi
hm... danke für die schnellen und aufschlussreichen antworten! :wink:
jetz stellen sich immer noch 2 fragen: 1. wie kann man am geschicktesten eine suchfunktion implementieren und das ergebnis dann in einem DBGrid oder so ausgeben...? 2. wie schreibt man ein Datum in die Tabelle, bzw. als was für ein Format muss man es behandeln...? TDateTime..? |
Re: Allgemeine Fragen zu Access + Delphi
Zitat:
Vesuche mal folgendes:
Delphi-Quellcode:
Durch den Befehl Like können Wildcards verwendet werden.
DataModule2.qryUser.Close;
DataModule2.qryUser.SQL.Clear; DataModule2.qryUser.SQL.Add('SELECT * FROM TUser WHERE (name LIKE' + QuotedStr (form1.edit1.text) + '%'); DataModule2.qryUser.Open; z.B;
SQL-Code:
SELECT * FROM TUser WHERE (name LIKE 'SHA%') //Zeige alle Name die mit SHA anfangen
SELECT * FROM TUser WHERE (name LIKE '%SHA') //Zeige alle Name die mit SHAR enden SELECT * FROM TUser WHERE (name LIKE '%SHA%') //Zeige alle Name in denen SHA vorkommt Zitat:
Delphi-Quellcode:
DataModule2.qryUser.FieldByName ('datum').AsDateTime := now;
|
Re: Allgemeine Fragen zu Access + Delphi
ok, danke! also das mit der suchfunktion klappt nur, wenn ich es direkt in die Query schreibe, also nicht zur laufzeit. wenn ich das in eine dynamische query schreiben will (was ziemlich empfehlenswert ist bei einer suchfunktion :wink: ) erkennt er das hochkomma nicht und fängt direkt einen neuen string an, so dass ich den ausdruck '%la%' nicht in hochkommas setzen kann... weiß da jemand einen lösungsvorschlag?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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 by Thomas Breitkreuz