Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Allgemeine Fragen zu Access + Delphi (https://www.delphipraxis.net/6539-allgemeine-fragen-zu-access-delphi.html)

Saulo 14. Jul 2003 14:53


Allgemeine Fragen zu Access + Delphi
 
Hallo!

Also, ich habe schon vor einiger Zeit gepostet dass ich bei einem Projekt Hilfe brauche, leider haben mir die antworten aber nicht sehr weiter geholfen, deswegen stelle ich jetzt einfach mal ein paar ganz konkrete Fragen und hoffe jemand kann sie mir beantworten:

- 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....

Saulo 15. Jul 2003 15:57

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.......

MrSpock 15. Jul 2003 23:05

Re: Allgemeine Fragen zu Access + Delphi
 
Hallo Saulo,

mit einer SELECT Anweisung holst du dir das tatsächliche Passwort:

SQL-Code:
SELECT pword FROM tabPasswoerter WHERE USER = "MrSpock"
Dieses Statement kommt in die SQL Eigenschaft einer Query Komponente.
Mit

Delphi-Quellcode:
qryPwort.Open;
wird die Query ausgeführt und kann dann mit

Delphi-Quellcode:
if qryPwort.FieldByName('pword').AsString = edPassword.Text then
   { Passwort stimmt }
else
   { Passwort stimmt nicht };
Ich hoffe, das hilft erst einmal ein bisschen weiter.

Saulo 15. Jul 2003 23:26

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!

Saulo 15. Jul 2003 23:54

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:
begin
  qryDatamodue2.ADOQuery1.Open;
  if qryADOQuery1.FieldByName('passwort').AsString = form1.Edit1.Text then
   form1.Label1.Caption := 'richtig';
else
   form1.Label1.Caption := 'falsch';
end;
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...?

Saulo 15. Jul 2003 23:56

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;

Touchdown 16. Jul 2003 07:03

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:

Saulo 16. Jul 2003 19:37

Re: Allgemeine Fragen zu Access + Delphi
 
em.... was genau heißt das jetzt (=was muss ich machen??? :? )

Saulo 16. Jul 2003 19:46

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.

Saulo 16. Jul 2003 22:42

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:

MrSpock 17. Jul 2003 07:46

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.

Phoenix 17. Jul 2003 09:00

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.

Saulo 17. Jul 2003 21:43

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:
begin
  DataModule2.ADOQuery1.Open;
  if Datamodule2.ADOQuery1.FieldByName('Passwort').AsString = form1.Edit1.Text then
   form1.Label1.Caption := 'richtig'
else
   form1.Label1.Caption := 'falsch';
end;
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:

Blizzard 17. Jul 2003 22:28

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

Saulo 17. Jul 2003 23:14

Re: Allgemeine Fragen zu Access + Delphi
 
jo danke, hab den fehler gefunden! hatte in der Query den falschen Spaltennamen angegeben... :oops:

Saulo 17. Jul 2003 23:15

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!

MrSpock 18. Jul 2003 08:01

Re: Allgemeine Fragen zu Access + Delphi
 
Hallo Saulo,

zum Navigieren benutzt du die Methoden:

Delphi-Quellcode:
ADOQuery1.First;
ADOQuery1.Next;
ADOQuery1.Prior;
ADOQuery1.Last;
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.

Saulo 18. Jul 2003 14:32

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:

MrSpock 18. Jul 2003 15:41

Re: Allgemeine Fragen zu Access + Delphi
 
Hallo Saulo,

Delphi-Quellcode:
ADOQuery1.Append;
oder
Delphi-Quellcode:
ADOQuery1.Insert;

Saulo 19. Jul 2003 00:05

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:
SELECT * FROM TTitelaufnahme;
und die Prozedur dazu heißt:

Delphi-Quellcode:
begin
  DataModule2.ADOQuery2.Open;
  DataModule2.ADOQuery2.insert;
end;
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)?

Saulo 19. Jul 2003 09:50

Re: Allgemeine Fragen zu Access + Delphi
 
Oh danke, habs schon... es muss nämlich nicht ADOQuery1.Next heißen sondern ADOTAble1.Next

Saulo 19. Jul 2003 13:34

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:
SELECT Passwort FROM TUser WHERE User = 'Username';
wie kann ich stattdessen eine Variable einfügen? z.B. den Namen aus einem DBEdit-Feld?

MrSpock 19. Jul 2003 15:34

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:
SELECT Passwort FROM TUser WHERE User = :usr
durch den Doppelpunkt hast du einen Parameter erzeugt. Diesesm weist du einen Wert zu, bevor du die Query ausführst:

Delphi-Quellcode:
ADOQuery1.ParamByName('usr').AsString := 'MrSpock';
ADOQuery1.Open;
oder du erzeugst das SQL Statement dynamisch:

Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT Passwort FROM TUser WHERE User ='+QuotedStr(Edit1.Text));
ADOQuery1.Open;

Saulo 21. Jul 2003 21:05

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!

Saulo 21. Jul 2003 23:48

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?

MrSpock 22. Jul 2003 07:55

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:
DELETE FROM t_personen WHERE ID = 4
oder, falls ID ein Schlüsselfeld ist, z.B. mit

Delphi-Quellcode:
if t_personen.FindKey([4]) then
  t_personen.Delete;
Den Inhalt eines Editfeld in die Datenbank schreiben geht mit:

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;

r_kerber 22. Jul 2003 08:06

Re: Allgemeine Fragen zu Access + Delphi
 
Zitat:

Zitat von MrSpock
Den Inhalt eines Editfeld in die Datenbank schreiben geht mit

oder per SQL:
SQL-Code:
UPDATE t_personen SET (Inhalt) = ('Text') WHERE ID = 4

Saulo 23. Jul 2003 22:46

Re: Allgemeine Fragen zu Access + Delphi
 
Zitat:

wie wäre es einmal mit einem Buch zum Thema Datenbankprogrammierung?
ist echt zu teuer... hab mir ein delphi buch bestellt, 50€... nur hat das leide rnicht viel mit datenbankprogrammierung zu tun....

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

Saulo 27. Jul 2003 00:57

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....?

Saulo 27. Jul 2003 12:19

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:
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;
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 :(

Sharky 27. Jul 2003 12:29

Re: Allgemeine Fragen zu Access + Delphi
 
Zitat:

Zitat von Saulo
....

Code:
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;   //1. Aufruf (der überhaupt nichts macht)
  if username = true   //2. Aufruf.
  then ShowMessage('Der Username ist bereits vergeben!')
.....


Ä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.

Saulo 27. Jul 2003 13:34

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...

Sharky 27. Jul 2003 13:52

Re: Allgemeine Fragen zu Access + Delphi
 
Hai Saulo,

hier ersteinmal der "wichtigste" Teil:

Delphi-Quellcode:
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;
result enthält den Rückgabewert einer Funktion.

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!

Saulo 27. Jul 2003 14:12

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....

Sharky 27. Jul 2003 14:45

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:

Zitat von Saulo
...prüfe ich ob die telefonnummer richtig eingegeben ist..

Wie ist denn deine Definition einer "richigen Telefonnummer"?

Saulo 27. Jul 2003 17:40

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:
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;
bitte nicht wieder lachen :oops: ich weiß ich kanns nicht... aber irgendwie gehts doch in diese richtung oder....?

Sharky 27. Jul 2003 17:49

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:
 FieldByName('Passwort').AsString := te_Passwort.Text;
Einen Wert in die Tabelle schreibst kannst Du ihn mit:

Delphi-Quellcode:
  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;
auslesen.


EDIT: Kleinen Fehler im Code behoben

Saulo 27. Jul 2003 18:41

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..?

Sharky 27. Jul 2003 19:01

Re: Allgemeine Fragen zu Access + Delphi
 
Zitat:

Zitat von Saulo
...
1. wie kann man am geschicktesten eine suchfunktion implementieren und das ergebnis dann in einem DBGrid oder so ausgeben...?

Ich weiss nicht ob bei Access der LIKE-Befehl unterstützt wird. Ich arbeie mit einem MS-SQL-Server.

Vesuche mal folgendes:

Delphi-Quellcode:
  DataModule2.qryUser.Close;
  DataModule2.qryUser.SQL.Clear;
  DataModule2.qryUser.SQL.Add('SELECT * FROM TUser WHERE (name LIKE'    + QuotedStr (form1.edit1.text)
   + '%');
  DataModule2.qryUser.Open;
Durch den Befehl Like können Wildcards verwendet werden.

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:

Zitat von Saulo
...
2. wie schreibt man ein Datum in die Tabelle, bzw. als was für ein Format muss man es behandeln...? TDateTime..?

Delphi-Quellcode:
 DataModule2.qryUser.FieldByName ('datum').AsDateTime := now;

Saulo 27. Jul 2003 20:12

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.
Seite 1 von 2  1 2      

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