AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi gleiche einträge verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

gleiche einträge verhindern

Ein Thema von mimi · begonnen am 1. Sep 2006 · letzter Beitrag vom 2. Sep 2006
Antwort Antwort
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

gleiche einträge verhindern

  Alt 1. Sep 2006, 14:42
Datenbank: sqlite3 • Version: 3 • Zugriff über: sqlite3.dll
Hallo,
ich nutze die "sqlite3.dll" und habe damit sogut wie keine erfahrung.

so ich kann inzwischen einträge hinzufügen zurlaufzeit und im qullcode das problem ist dabei:
sobalt einträge doppelt vorkommen das eine fehlermeldung erzeugt wird.... kann ich diese feherlmeldung irgenwie abfangen und verarbeiten ? bzw. verhindern evlt ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: gleiche einträge verhindern

  Alt 1. Sep 2006, 16:34
Hallo,

mache
Delphi-Quellcode:
try
  Insert;
except
end;
Heiko
Heiko
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: gleiche einträge verhindern

  Alt 2. Sep 2006, 10:35
Geht leider nicht...

hier ist mein qullcode
Delphi-Quellcode:
procedure TForm1.InitDb(FileName:TFileName);
var
  slDBpath:String;
  i:Integer;
  isda:Boolean;
begin
  slDBpath:=ExtractFilepath(application.exename)+ 'test.db';
  sldb := TSQLiteDatabase.Create(slDBPath);

// if sldb.TableExists('testTable') then begin
// sSQL := 'DROP TABLE testtable';
// sldb.execsql(sSQL);
// end;


  if sldb.TableExists('testTable') = False then begin
    sSQL :='CREATE TABLE testtable ([Name] VARCHAR (255));';
    sldb.execsql(sSQL);
    sldb.execsql('CREATE INDEX TestTableName ON [testtable]([Name]);');
  end;

try
  sldb.BeginTransaction;
  sSQL := 'INSERT INTO testtable(Name) VALUES ("Some Name");';
  sldb.ExecSQL(sSQL);

  sSQL := 'INSERT INTO testtable(Name) VALUES ("Another Name");';
  sldb.ExecSQL(sSQL);
  sldb.Commit;
except
end;

   sltb := slDb.GetTable('SELECT * FROM testtable');
  for i:=0 to sltb.Count-1 do begin
    ListBox1.Items.add(sltb.FieldAsString(sltb.FieldIndex['Name']));
    sltb.Next;
  end;
end;
mir ist heute noch was anders eingefallen. ich weiß nur nicht ob sich das lohnen würde und zwar:
ich lege ein array an von typ tmyData z.b.
und in diesem record ist eine boolean variable und ein array of interger.
jetzt ich jedes zeichen durchgehen und umwandeln und nachschauen ob es diese zeichen mit dieser position schon gibt. könnt ihr folgende?

so müste ich nicht suchen und vorallen bei größeren datenmengen könnte diese verfahren praktisch sein vorrausgesetzt das es funktioniert und auch so klappt wie ich es mir vorstelle.

achja dieser array of interger brauche ich um dort die position des jeweiligen zeichen obzuspeichern.
Ich gehe ja jedes zeichen durch von string der hinzugefügt werden soll und füge diese in eine listbox ein.
bevor ich das mache wollte ich jedese zeichen in einer schleife durchgehen und prüfen ob es diesen zeichen schon gibt wenn ja, gibt es diese zeichen an der jeweiligen position.
jetzt wollte ich daraus ein string bilden und verleichen mit dem string den ich hinzufügen möchte. mit groß klein schreibung vergleichen. so die idee jetzt weiß ich nicht ob das wirklich schneller als z.b. die listbox jedes mal durchzugehen und zu schauen ob es dort schon ein entsprechden eintrag gibt...

ich hoffe ihr versteht was ich vorhabe....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#4

Re: gleiche einträge verhindern

  Alt 2. Sep 2006, 12:39
@mimi
Ich bin kein SQL Fachmann, aber beim Überfliegen Deines Codes fällt mir auf:
Solltest Du nicht vorher in der Datenbank nachsehen, ob der Name schon vorhanden ist?
Unter Try willst Du gleich die Daten eingeben?

Und bei einem Conflict kann Du der Datenbank sagen, was Du tun möchtest:
on conflict
Vielleicht hilft es Dir weiter.

Beste Grüße
Go2EITS
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: gleiche einträge verhindern

  Alt 2. Sep 2006, 16:51
vielen dank für den link, sowas hatte ich vor.
ich wollte gerne nach prüfen ob es diesen eintrag schon gibt oder nicht.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz