![]() |
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Moin LuckyStrike.
Ich bezweifle, dass du eine Spalte namens mainDB in deiner Tabelle hast. Deshalb kann deine Abfrage nicht funktionieren. Hast du keinen Primärschlüssel vergeben oder gibt es wenigstens eine Kombination mehrerer Felder, die eindeutig auf einen Datensatz zeigen? |
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Zitat:
|
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Zitat:
Aber wie muss ich dann den Code verändern? Das geht mir nicht ganz auf. Zitat:
Wichtig ist - dass ich es schaffe einen bestimmten Datensatz aus dem Programm herraus zu löschen, am Ende werde ich um diese Alias Namen für die DBs vermutlich so oder so nicht herum kommen - da das Programm später nicht von mir gepflegt wird. |
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Zitat:
|
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Zitat:
hab ich versucht, hab mal das Feld 'Datum' probiert - aber da kommt die gleiche Fehlermeldung, nur eben das nicht das Feld "MainDB" nicht gefunden wurde, sondern "Datum"
Delphi-Quellcode:
Ich verzweifel noch.
q_Delete.SQL.Clear;
q_Delete.SQL.Add('DELETE FROM MainDB WHERE Datum=:Id'); q_Delete.ParamByName('Id').AsInteger := querysort.FieldByName('Datum').AsInteger; q_Delete.ExecSQL; // Wichtig, hier kein Open querySort.Refresh; // Anzeige aktualisieren. |
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal die Datenbank, vielleicht schaut ihr euch die mal an, z.B. mit Excel. Das Erste Feld zeigt die Spalte an, die ich meinte. Schauts euch mal an, thx.
PS: Da die Endung ".dbf" verboten ist, hab ich noch ".txt" dazu geschrieben. Einfach wegnehmen. |
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Zitat:
|
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Hi LuckyStrike.
Wenn du das nächste Mal Beispieldaten schickst, achte bitte auf Datenschutzbestimmungen. Ich dürfte nicht wissen warum sich ***piep*** einen ***piep*** ausgeliehen hat. Die einzige eindeutige Kombination dieser Daten wäre Name, Datum, Zweck. Da man aber nicht sicher sein kann, dass diese Daten niemals doppelt vorkommen würde ich der Tabelle eine fortlaufende Zahl als Primärschlüssel geben.
DAnn kannst du das hier nehmen:
Delphi-Quellcode:
Du wirst in Zukunft immer wieder auf Probleme stoßen wenn du keine eindeutigen Schlüssel verwendest.
q_Delete.SQL.Text := 'DELETE FROM MainDB WHERE ID = :ID';
q_Delete.ParamByName('ID').AsInteger := QuerySort.FieldByName('ID').AsInteger; :arrow: Also lieber jetzt als später... |
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Zitat:
Es läßt sich keine Spalte als Indexfeld oder Primärfeld deklarieren. Oder mir fehlt zumindest das Wissen wie. Danke das du dir die Datenbank angeschaut hast und deine Meinung gepostet hast. Wenn du Ideen hättest, bezüglich eines Primärschlüssels ... sags nur. |
Re: Einen Datensatz löschen aus SQL sortiertem Datenbestand
Hab jetzt mal den Code verändert, und der Datenbank als Test ein Integer Feld spendiert.
Hat den Namen Integ, hab dann Zahlen in die Felder eingetragen 1,2,3,4,5,6,7,8,9,10. Der Code schaut nun so aus:
Delphi-Quellcode:
Nun bricht das Programm nicht ab, wenn man auf den Button klickt, der Code läuft auch durch - denn am Ende wird der Query kurz refreshed, aber leider wird gar nichts gelöscht... hm.
q_Delete.SQL.Clear;
q_Delete.SQL.Add('DELETE FROM "t:eDienstreisebuch\mainDB.dbf" WHERE Integ=:Id'); q_Delete.ParamByName('Id').AsInteger := querysort.FieldByName('Integ').AsInteger; q_Delete.ExecSQL; // Wichtig, hier kein Open querySort.Refresh; // Anzeige aktualisieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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-2025 by Thomas Breitkreuz