Einzelnen Beitrag anzeigen

LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#1

Einen Datensatz löschen aus SQL sortiertem Datenbestand

  Alt 5. Jan 2004, 07:45
Morgen,
neues Jahr neues (Un)Glück.

Die Überschrift ist vielleicht etwas nichts sagend, daher hier mal eine genaue Erklärung.

Den Inhalt einer Datenbank wird in nem DBGrid ausgegeben. Der Inhalt wird sortiert nach Datum angezeigt, dies ist relevant - haben wir ja schon ne Weile drüber diskutiert.

Nun funktioniert das löschen eines ausgewählten Datensatzes nicht mehr wie früher, d.h. als die Daten im Grid noch nicht sortiert ausgegeben wurden hat es gereicht einen Datensatz anzuklicken, und dann auf den Button zu drücken mit dieser Funktion:
Delphi-Quellcode:
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
maindbtabelle.Delete;
end;
Das geht nun nicht mehr, denn wenn man nun auf den Button klickt ist es egal welcher Datensatz ausgewählt wurde, es wird einfach der (vermutlich) 1. der unsortierten Datenbank gelöscht.

Nun schrieb mir schon ein kluges Köpfchen seine Idee dazu, der auf meine Komponenten angepasste Code sieht so aus:
Delphi-Quellcode:
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
 q_Delete.SQL.Clear;
  q_Delete.SQL.Add('DELETE FROM mainDB WHERE MainDB=:Id');
  q_Delete.ParamByName('Id').AsInteger := querysort.FieldByName('MainDB').AsInteger;
  q_Delete.ExecSQL; // Wichtig, hier kein Open
  querySort.Refresh; // Anzeige aktualisieren.
end;
Das Problem dabei war, ich nutze eine DBase Datenbank. Diese hat zwar ein Feld welches eine laufende Nummer enthält, dieses ist aber nicht ansprechbar. Zumindest nicht mit den Mitteln die ich versucht habe.

Das Feld mit dieser (eigentlichen) Indexnummer steht in der Datenbank an der ersten Stelle, die Überschrift der Spalte ist der Name der Datenbank. Zum Beispiel die Datenbank heißt 'Name.dbf' dann heißt die Spalte 'Name'.
Oben im Code heißt die DB 'MainDB', aber leider funktioniert es so nicht .
Das Programm läßt sich compilieren aber sobald der Button gedrückt wird gibts diese Fehlermeldung
Zitat:
Im Projekt soundso.exe ist ein Exception Fehler der Klasse EDatabaseError aufgetreten. Meldung: 'Querysort: Das Feld 'MainDB' wurde nicht gefunden'. Prozeß wurde angehalten. ...
Kennt jemand einen Weg wie ich dieses 'Indexfeld' ansprechen kann, oder eine ganz andere Lösung für das Problem?
Die Funktion ist wichtig, ich kann diese also nicht weglassen - und das Problem hindert mich extrem an der Fertigstellung *seufz*.
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat