![]() |
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 06:08 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