AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Unerklärliches selbstständiges Insert?

Unerklärliches selbstständiges Insert?

Ein Thema von tr909 · begonnen am 1. Nov 2007 · letzter Beitrag vom 4. Nov 2007
Antwort Antwort
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#1

Unerklärliches selbstständiges Insert?

  Alt 1. Nov 2007, 10:41
Datenbank: Access • Version: 2000 • Zugriff über: ADO
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:
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;
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.
Evtl. kann ja einer von euch dieses Rätsel lüften.

Gruß
tr909
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Unerklärliches selbstständiges Insert?

  Alt 1. Nov 2007, 10:44
Versuch es mal mit .Lookup()
Markus Kinzler
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Unerklärliches selbstständiges Insert?

  Alt 1. Nov 2007, 10:50
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Unerklärliches selbstständiges Insert?

  Alt 1. Nov 2007, 10:51
Anhand des Codesegments kann ich es auch nicht nachvollziehen.
Markus Kinzler
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Unerklärliches selbstständiges Insert?

  Alt 1. Nov 2007, 10:59
Ich mir ja leider auch nicht. Dies ist auch die einzige Stelle an der auf die Tabelle zugegriffen wird.
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Unerklärliches selbstständiges Insert?

  Alt 1. Nov 2007, 11:06
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
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Unerklärliches selbstständiges Insert?

  Alt 4. Nov 2007, 09:54
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.
  Mit Zitat antworten Zitat
Faxman

Registriert seit: 9. Jun 2006
Ort: Mainz
17 Beiträge
 
Delphi 7 Architect
 
#8

Re: Unerklärliches selbstständiges Insert?

  Alt 4. Nov 2007, 10:10
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
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: Unerklärliches selbstständiges Insert?

  Alt 4. Nov 2007, 11:27
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;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Unerklärliches selbstständiges Insert?

  Alt 4. Nov 2007, 11:37
Zitat von tr909:
Moin. Das der Code nicht schön ist weiß ich selber. Wird deshalb auch umgeschrieben.
Zitat von grenzgaenger:
...würde dir raten, das ganze erst mal auf SQL umzustellen...



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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf