![]() |
Datenbank: Access • Version: 2000 • Zugriff über: ADO
Unerklärliches selbstständiges Insert?
Moin. Ich habe hier ein altes Stück Software liegen bei dem ich einen Fehler nicht verstehe. Das der Code nicht schön ist weiß ich selber. Wird deshalb auch umgeschrieben. ;)
Ich benutze TJVLoginDialog und diese sind die beiden benutzen procedures.
Delphi-Quellcode:
Nun das was ich nicht verstehe. Zu nicht reproduzierbaren Zeitpunkten kommt es vor das der eingegebene Benutzername als neuer Eintrag in der Tabelle auftaucht. Das ich jedoch keinerlei Inserts benutze ist es mir ein Rätsel wie die da rein kommen.
procedure TfrmMain.JvLoginDialog1BeforeLogin(Sender: TObject);
begin ADOCon1.Close; ADOCon1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + 'datei.mdb;Persist Security Info=False'; ADOCon1.Open; end; procedure TfrmMain.JvLoginDialog1CheckUser(Sender: TObject; const UserName, Password: string; var AllowLogin: Boolean); var tblUs: TADOTable; i: integer; begin userID := 0; userNa := ''; tblUs := TADOTable.Create(self); tblUs.Connection := ADOCon1; tblUs.TableName := 'Nutzer'; tblUs.Open; if tblUs.Locate('Kurz', UserName, []) then if tblUs.FieldByName('Password').AsString = Password then begin userID := tblUs.FieldByName('UserID').AsInteger; userNa := tblUs.FieldByName('Kurz').AsString; end; tblUS.Close; tblUs.Free; if userID = 0 then begin ShowMessage('Ungültiger Benutzername. Anwendung wird beendet.'); ADOCon1.Close; JvLoginDialog1.TerminateApplication; end; end; Evtl. kann ja einer von euch dieses Rätsel lüften. Gruß tr909 |
Re: Unerklärliches selbstständiges Insert?
Versuch es mal mit .Lookup()
|
Re: Unerklärliches selbstständiges Insert?
Danke für die Antwort, aber eigentlich wollte ich nur wissen warum es bei meinem Code zum einfügen von Datensätzen kommt, weil ich ja nirgends explizit in die Tabelle schreibe.
Gruß tr909 |
Re: Unerklärliches selbstständiges Insert?
Anhand des Codesegments kann ich es auch nicht nachvollziehen.
|
Re: Unerklärliches selbstständiges Insert?
Ich mir ja leider auch nicht. Dies ist auch die einzige Stelle an der auf die Tabelle zugegriffen wird.
|
Re: Unerklärliches selbstständiges Insert?
Hi,
könnte ein Fehler im Treiber mit dem Locate sein. Setzt mal tblUs.ReadOnly auf true und dann erst öffnen, dann sollte das nicht mehr vorkommen. Gruss |
Re: Unerklärliches selbstständiges Insert?
Der Code alleine macht garantiert keine Inserts in der Tabelle, das muss von woanders herrühren.
N.B.: Du solltest eigentlich NIE ein Passwort im Klartext in einer DB Tabelle ablegen. Das aber nur mal so am Rande. |
Re: Unerklärliches selbstständiges Insert?
wenn access geöffnet wird steht meines wissens der datensatzzeiger am ende der tabelle auf einem neuen, leeren datensatz.
das musst du mal prüfen und schauen das du autoinsert ausschaltest. der insert passiert wohl wenn das richtige password gefunden wurde. have fun |
Re: Unerklärliches selbstständiges Insert?
würde dir raten, das ganze erst mal auf SQL umzustellen... dein code stück sieht dann in etwa wie folgt aus..
Delphi-Quellcode:
procedure TfrmMain.JvLoginDialog1CheckUser(Sender: TObject; const UserName,
Passwoprocedure TfrmMain.JvLoginDialog1CheckUser(Sender: TObject; const UserName, Password: string; var AllowLogin: Boolean); var tblUs: TADOQuery; i: integer; begin userID := 0; userNa := ''; tblUs := TADOQuery.Create(self); try tblUs.Connection := ADOCon1; tblus.sql.add('select UserId, Kurz, Password from Nutzer where kurz = ' + quotedstr(username); tblUs.Open; if tblus.recordcount > 0 then begin tblus.first; if tblUs.FieldByName('Password').AsString = Password then begin userID := tblUs.FieldByName('UserID').AsInteger; userNa := tblUs.FieldByName('Kurz').AsString; end; end; tblUS.Close; finally tblUs.Free; end; if userID = 0 then begin ShowMessage('Ungültiger Benutzername. Anwendung wird beendet.'); ADOCon1.Close; JvLoginDialog1.TerminateApplication; end; end; |
Re: Unerklärliches selbstständiges Insert?
Zitat:
Zitat:
Zum Problem: Habe ich noch mit Access noch *nie* erlebt, will aber Nichts heißen. Mich würde interessieren, unter welchen Umständen das passiert. Poste bitte die Lösung, falls es sich wirklich um eine Accessmacke handeln sollte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 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