Entwickler-Ecke

Datenbanken - Prüfung zweier Datensätze prüfen und Panel visible setzen


Roy - Mo 18.01.16 16:21
Titel: Prüfung zweier Datensätze prüfen und Panel visible setzen
Hallo Freunde,
mal wieder eine Frage von mir:

Ich arbeite in meinem Tool mit Access und somit auch DBEdit Komponenten. Ich möchte nun wenn DBEdit1= Edit ist ein Panel anzeigen lassen

Zbs. Hallo Freunde,

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button1Click(Sender: TObject);
begin
    if Edit1.text = DBEdit1.Text then
  Panel1.Visible:= true;
end;


Funktioniert aber nicht
Kann mir jemand helfen?

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt


baumina - Mo 18.01.16 16:39

Greife nicht auf die DBEdit zu, sondern auf die Daten der Tabelle.


Delphi-Quelltext
1:
if DBTable.FieldByName('EinFeld').AsString = Edit1.Text                    


tomte - Mo 18.01.16 16:51

Versuch es mal mit:

if (CompareStr((Edit1.text), (DBEdit1.Text)) < 0) then
Panel1.Visible:= true;


Roy - Mo 18.01.16 18:33

user profile icontomte hat folgendes geschrieben Zum zitierten Posting springen:
Versuch es mal mit:

if (CompareStr((Edit1.text), (DBEdit1.Text)) < 0) then
Panel1.Visible:= true;


Hier gibt er mir auch ohne das die Inhalte Übereinstimmen das Panel1.visible:= true aus
Er soll die beiden Felder vergleichen, und wenn der Inhalt Übereinstimmt soll Panel1 visible
Wofür soll das <0 stehen


tomte - Di 19.01.16 09:25

user profile iconRoy hat folgendes geschrieben Zum zitierten Posting springen:
user profile icontomte hat folgendes geschrieben Zum zitierten Posting springen:
Versuch es mal mit:

if (CompareStr((Edit1.text), (DBEdit1.Text)) < 0) then
Panel1.Visible:= true;


Hier gibt er mir auch ohne das die Inhalte Übereinstimmen das Panel1.visible:= true aus
Er soll die beiden Felder vergleichen, und wenn der Inhalt Übereinstimmt soll Panel1 visible
Wofür soll das <0 stehen


Oh, da hat sich ein Fehler eingeschlichen, statt < 0 muss es = 0 heissen.
CompareStr liefert bei Gleichheit zweier Strings 0 zurück.

Ausserdem habe ich festgestellt, dass diese Funktion mittlerweile veraltet ist und man lieber ansicomparestr verwenden sollte.

Also :
if (ansicomparestr((Edit1.text), (DBEdit1.Text)) = 0) then
Panel1.Visible:= true;

oder etwas kürzer:
Panel1.Visible := ansicomparestr(Edit1.text, DBEdit1.Text) = 0;


Roy - Di 19.01.16 11:47

Muss Eigentlich ein Fremder PC Access installiert haben um mit der Datenbank zu arbeiten?


doublecross - Mi 20.01.16 10:33

Hi,

user profile iconRoy hat folgendes geschrieben Zum zitierten Posting springen:
Muss Eigentlich ein Fremder PC Access installiert haben um mit der Datenbank zu arbeiten?


höchstwahrscheinlich nicht ;).

Die Frage ist natürlich immer, wie du auf die Datenbank zugreifst. Ich nehme an, dass du er über die JET-Engine per ADO machst. Dafür wird lediglich MDAC [https://www.microsoft.com/en-us/download/details.aspx?id=5793] benötigt. Welches nur bei ganz alten Windows Versionen nicht Bestandteil des Systems sind.


Roy - Mi 20.01.16 11:15

Hallo Ihr lieben kleinen Helfer,
kann man auch noch eine oder Funktion himzufügen?


Roy - Mi 20.01.16 11:16

user profile icondoublecross hat folgendes geschrieben Zum zitierten Posting springen:
Hi,

user profile iconRoy hat folgendes geschrieben Zum zitierten Posting springen:
Muss Eigentlich ein Fremder PC Access installiert haben um mit der Datenbank zu arbeiten?


höchstwahrscheinlich nicht ;).

Die Frage ist natürlich immer, wie du auf die Datenbank zugreifst. Ich nehme an, dass du er über die JET-Engine per ADO machst. Dafür wird lediglich MDAC [https://www.microsoft.com/en-us/download/details.aspx?id=5793] benötigt. Welches nur bei ganz alten Windows Versionen nicht Bestandteil des Systems sind.


Vielen Dank


Roy - Di 09.02.16 21:29

Mir ist jetzt die Sache gelungen habe aber dazu noch eine Frage.
Wie kann ich noch eine Fehlermeldung rausgeben wenn rot markiertes nicht erfüllt ist?

procedure TForm1.Button1Enter(Sender: TObject);
begin
Panel1.Visible := ansicomparestr(Zertifizierungnummer.text, DBEdit2.Text) = 0;
Panel3.Visible:= false;
end


tomte - Mi 10.02.16 11:18

user profile iconRoy hat folgendes geschrieben Zum zitierten Posting springen:

Wie kann ich noch eine Fehlermeldung rausgeben wenn rot markiertes nicht erfüllt ist?

Panel1.Visible := ansicomparestr(Zertifizierungnummer.text, DBEdit2.Text) = 0;


In dem die Fehlermeldung ausgibst, wenn der Vergleich einen Wert ungleich 0 ergibt. Dazu kannst du z.B. ein Panel mit einer Fehlermeldung einblenden.


Delphi-Quelltext
1:
PanelFEHLERMELDUNG.Visible := ansicomparestr(Zertifizierungnummer.text, DBEdit2.Text) <> 0;                    


Roy - Mi 10.02.16 16:33

Funktioniert wunderbar.
Vielen Dank