Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Doppelte Datensätze nicht zuslassen (Paradox)! (https://www.delphipraxis.net/24524-doppelte-datensaetze-nicht-zuslassen-paradox.html)

plautzer 22. Jun 2004 15:29


Doppelte Datensätze nicht zuslassen (Paradox)!
 
HI,

ich habe noch eine kleiens problem.
Bei der eingabe der ID soll er prüfen ob es die id schon gibt.
ich hatte mir gedacht das es so gehen würde:

Delphi-Quellcode:
  if e_id.Text = '' then
  begin
    MessageDlg('Eingabe erforderlich', mtError, [mbOk], 0);
    e_id.SetFocus;
  end
else ...post!
Das problem hier ist, das immer die fehlermeldung kommt, da ja immer ein eintrag drin, nämlich genau dieser!

Kann man es machen, das die fehlermeldung kommt wenn mal die gleich id drinn ist?
Oder gibts noch andere vorschläge? SQL kann ich ja in verbindung mit paradoxtabellen nicht nutzen.

Thx,

plautzer

angos 22. Jun 2004 15:36

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
Warum kannst du SQL nicht nutzen. Ich nutze das auch bei meinen Paradox Tabellen ??
:shock:

plautzer 22. Jun 2004 17:06

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
hmm, keine Ahnung.
-> da muss ich mich wohl erstmal schlau machen, wie ich das integriere.

na wie würde denn das ganze mit sql aussehen?

Plautzer

Albi 22. Jun 2004 17:16

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
Hallo,

Wenn du eine ID nehmen willst, warum läßt Du diese nicht einfach von der Paradox erstellen. Dann brauchst Du nicht nachschauen ob diese schon ist.

Ansonsten kannst Du einfach eine Abfrage schreiben. So in etwa:

SQL-Code:
Select Count(ID) From Table WHERE ID = '+e_id.Text+'

If Query1.Fields[0].asInteger > 0 Then
ShowMessage('ID bereits vergeben!')
else
Query1.post;

plautzer 22. Jun 2004 21:37

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
Wie aber deklariere ich SELECT?

Ich habe nur tables, keine queries.
In der Hilfe finde ich auch nichts.


Ausserdem:
Bei mir entsteht immerwieder eine leerer Eintrag (ausser datum ist drin),
wie lösche ich die einträge wo id='' sind?


Plautzer

grayfox 22. Jun 2004 23:24

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
hallo plautzer!

Zitat:

Bei der eingabe der ID soll er prüfen ob es die id schon gibt.
die lösung, den user eine ID vergeben zu lassen ist nicht sehr geschickt, da sind fehler schon so gut wie sicher.
lass den pc selbst einen eindeutigen schlüssenbegriff errechnen und den trag dann im BeforePost-Event des tables ins feld ID.
falls dir kein eindeutiger begriff einfallen sollte, hol dir einfach die höchste bisherige ID und inkrementiere sie um eins...

von der verwendung eines autoinc-feldes rate ich ab, es macht mehr probleme als es vorteile bringt.

mfg, stefan

plautzer 23. Jun 2004 12:22

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
Das problem bei mir ist, das die ID eine funktion bei mir hat, sie dient als nummer der (hausnummer) des Klienten, und die soll ja nicht doppelt vorkommen.
Und ich möchte die tabelle nach dieser nummer geordnet habe, da das ganze ja ein bizzl system haben soll.

Wenn ich das richtig verstanden habe, soll ich neben der ID(wohungsnr) noch eine ID, die der Computer bestimmt.

Trotzdem, muss ich überprüfen ob WHGnr. nicht doppelt ist und sie danach ordnen, damit kommt es doch dann auf selbe hinaus oda?

Wie mache ich das mit dem Select? geht das bei tables?
Ich habe bis jetzt nur in verbindung mit queries gefunden

grayfox 23. Jun 2004 15:16

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
hallo plautzer!

wennn die wohnungsNr ein eindeutiger schlüsselbegriff ist, dann kannst ihn ohne weiteres als index verwenden. nur ist das aus deinem ersten beitrag nicht hervorgegangen.

nachdem du deinem daten über eine TTable komponente erfasst, macht es wenig sinn, eine TQuery zum überprüfen dazwischenzuschalten. mach die überprüfung auf doppelte datensätze im OnBeforePost-Event - dort kommst du vorm datensatz_in_die_tabelle_schreiben ohnehin vorbei. btw bekommst du ohnehin von der BDE die meldung, dass der schlüsselbegriff doppelt verwendet würde. ok, das ist zwar keine schöne lösung, aber eine doppelerfassung wird auf diese art schon mal verhindert.

wozu willst du die datensätze noch nach der wohnungsnummer sortiert einschlichten? das macht doch überhaupt keinen sinn. :gruebel:
wenn ich es richtig verstanden habe, ist 'wohnungsNr' als primary key definiert - und die datensätze werden beim anzeigen ohnehin nach dem primary key gereiht. in welcher reihenfolge sie in der tabelle liegen ist doch egal, oder?

nochmal: bei tables gibts grundsätzlich kein select. (ich hab mal gelesen, dass es bei den zeos-tables sowas geben soll, aber die verwendest ja nicht)

bleib beim erfassen, editieren bei TTable, zum erstellen von abfragen & auswertungen verwende ein TQuery. infos zu den sql-befehlen findest du hier im forum jede menge, zusätzlich hast du das file 'localsql.hlp' in deinem BDE-verzeichnis ...

mfg, stefan

plautzer 23. Jun 2004 16:17

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
Wie aber stelle ich fest das dieser der eitnrag doppelt ist?

Ich hatte das so probiert:
Delphi-Quellcode:
procedure TMietverwaltung.Table1BeforePost(DataSet: TDataSet);
begin
if e_whg.Text=TABLE1['whg'] then showmessage('Doppelte ID);
end;
..funzt aber nicht wirklich.

Plautzer

grayfox 23. Jun 2004 19:20

Re: Doppelte Datensätze nicht zuslassen (Paradox)!
 
sei mir bitte nicht bös, aber so wird das nichts...
ich versteh allerdings nicht, wieso du doppelte datensätze erfassen kannst.
nachdem du 'Whg' als primären & eindeutigen index definiert hast, wird der
versuch, den indexwert doppelt zu verwenden mit der fehlermeldung

'indexfehler'

quittiert und die daten nicht in die tabelle übernommen. ok, es ist nicht
grad das gelbe vom ei, aber für den anfang würds schon mal reichen.

mfg, stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:03 Uhr.
Seite 1 von 2  1 2      

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