Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL In DBGrid markierten Datensatz löschen/ändern (https://www.delphipraxis.net/132640-sql-dbgrid-markierten-datensatz-loeschen-aendern.html)

germanos 16. Apr 2009 16:32

Datenbank: Paradox • Zugriff über: ODBC

SQL In DBGrid markierten Datensatz löschen/ändern
 
Hallo,
ich habe wieder mal ein Problem mit SQL. Ich möchte einen in einem DBGrid selektierten Datensatz löschen (DELETE) oder aber ändern (UPDATE). Hierbei steht mir aber nur die Record-Nummer der Query zur Verfügung, das heißt, ich selektiere den Datensatz und möchte ihn auf Tastendruck mit SQL DELETE löschen. Eine WHERE-Abfrage der Felder ist nicht möglich, da es auch mehrere identische Datensätze geben kann.

Gibt es dennoch eine Möglichkeit, nur mit SQL dieses Problem zu lösen??

Für Vorschläge gerne mit Beispielcode wäre ich sehr froh. Vielen Dank.

nahpets 16. Apr 2009 16:41

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Hallo,
Zitat:

Zitat von germanos
Eine WHERE-Abfrage der Felder ist nicht möglich, da es auch mehrere identische Datensätze geben kann.

heißt das: 100% identisch, über alle Spalten?
Wenn ja, meiner Meinung nach chancenlos :-(

Ansonsten, alle Spalten in die Wherebedingung reinpacken, dann reicht ein beliebiges Zeichen Unterschied irgendwo.

Sind die Sätze wirklich 100% identisch [OT](eigentlich ja ein blöde Formulierung, identisch ist 100% sonst ist's nicht identisch)[/OT], dann nachträglich einen technischen Schlüssel einbauen (AutoInc, Satzzähler, GUID...) und dann damit arbeiten, damit's den Anwender nicht stört, kann man diese Spalte im DBGrid ja unsichtbar machen.

khh 16. Apr 2009 16:52

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Zitat:

Zitat von germanos
Eine WHERE-Abfrage der Felder ist nicht möglich, da es auch mehrere identische Datensätze geben kann.

da stimmt was mit dem db-design nicht.

zumindest eine eindeutige ID sollte jeder satz haben.
Bist du dir sicher dass es die nicht gibt?



Gruss KH

germanos 16. Apr 2009 17:15

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Hallo und vielen Dank.
Das völlig gleiche Datensätze vorhanden sind, ist sehr unwahrscheinlich, aber nicht unmöglich. Es handelt sich um ein Haushaltsbuch, indem ohne weiteres an einem Tag der gleiche Artikel 2 mal eingegeben werden könnte. Dann sind alle Spalten gleich vom Datum über KontoID usw.

Über eine Auto-Increment-Spalte habe ich auch schon nachgedacht, aber es erst einmal verworfen, da ich ja die RecNo bestimmen kann. Nur bin ich erst ein paar Wochen mit Delphi beschäftigt und habe mich in SQL "verliebt".

Deshalb wäre es mir lieber gewesen, über die Selektierung des Datensatzes zu einer Identifikation des Datensatzes zu kommen.

Sollte keine "einfache" Lösung möglich sein, werde ich eine Spalte für die eindeutige ID hinzu fügen.

Vielleicht könnt ihr mir sofort sagen, ob der AutoInc-Zähler in Paradoxtabellen abfragbar ist oder programmiert werden muß.

Besten Dank, Peter

khh 16. Apr 2009 17:33

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Zitat:

Zitat von germanos

Vielleicht könnt ihr mir sofort sagen, ob der AutoInc-Zähler in Paradoxtabellen abfragbar ist oder programmiert werden muß.

Besten Dank, Peter

eindeutige id ist in einer db eigentlich immer Pflicht.
Muss es denn paradox sein ??

Gruss KH

mkinzler 16. Apr 2009 17:35

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Man kann über die Selektierung auf den Datensatz kommen, wenn dieser einen Primärschlüssel besitzt

khh 16. Apr 2009 17:39

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Zitat:

Zitat von mkinzler
Man kann über die Selektierung auf den Datensatz kommen, wenn dieser einen Primärschlüssel besitzt

und dabei sind wir wieder bei einem eindeutigen Feld

Gruss KH

mkinzler 16. Apr 2009 17:41

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Ja, das ist der dreh und Angelpunkt

germanos 16. Apr 2009 17:47

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Hallo,

es musste nicht paradox sein, aber aus Büchern, die mir z.Zt. zur Verfügung stehen, war die Alternative dBase.

Ich habe paradox genommen, da die Beispiele in den Büchern eben diese Datenbank benutzten.

In der betroffenen Datenbank habe ich keinen Index vergeben, da eben bei absolut gleichen Datensätzen immer eine Fehlermeldung käme.

In der Datenbankoberfläche haben alle DBs eine Spalte mir einem Zähler. Ist diese Spalte nicht abfragbar??

Ich hoffe, ich nerve niemanden, aber ich bin halt nicht ruhig, bevor ein Problem gelöst ist. Also nochmals Danke,

Peter

khh 16. Apr 2009 17:52

Re: SQL In DBGrid markierten Datensatz löschen/ändern
 
Zitat:

Zitat von germanos
Hallo,


In der betroffenen Datenbank habe ich keinen Index vergeben, da eben bei absolut gleichen Datensätzen immer eine Fehlermeldung käme.



Peter

dazu ist halt das id feld von Nutzen




was istdas für eine anwendung?
Lohnt es sich nicht ne "richtige" DB zu nehmen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.
Seite 1 von 4  1 23     Letzte »    

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