Ich programmiere grad ein Programm zur verwaltung einer Paradox-Datenbank und ich habe nun ein Problem. Ein Eintrag, der in die Datenbank soll, generiere ich automatisch und er steht im Moment unter DBText.Caption Von dort aus wird er aber nicht in die Datenbank übernommen, wenn ich Table1.Post ausführe.
Meine Frage ist nun:
In welche Eigenschaft von DBText muss ich diesen automatisch generierten String schreiben, damit das nicht passiert?
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
Also die Fehlermeldung heißt exakt:"Im Projekt Project1.exe ist iene Exception der Klasse EDatabaseError aufgetreten. Meldung: 'Table1: Datenmenge weder im Editier- noch im Einfügemodus'. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen."
Die Prozedur ist relativ lang aber egal:
procedure TForm2.BtnSortClick(Sender: TObject); //Bubblesort
var
maxPK, x, y : LongInt;
Name1, Name2, Vorname1, Vorname2, Tutor1, Tutor2, Jahrgang1, Jahrgang2 : ShortString;
Pos1, Pos2 : TBookmark;
begin
Table1.Edit;
Table1.Last;
maxPK := StrToInt(DBText1.Caption); // höchsten PK herausfinden
Table1.First;
Pos1 := Table1.GetBookmark;
for x := maxPK - 1 downto 1 do
for y := 1 to maxPK do
begin
Table1.GotoBookmark(Pos1); // Die zu vergleichenden Feldwerte herausziehen
Name1 := Table1.FieldValues['Nachname'];
Vorname1 := Table1.FieldValues['Vorname'];
Tutor1 := Table1.FieldValues['Tutor'];
Jahrgang1 := Table1.FieldValues['Klasse'];
Table1.Next;
Pos2 := Table1.GetBookmark;
Name2 := Table1.FieldValues['Nachname'];
Vorname2 := Table1.FieldValues['Vorname'];
Tutor2 := Table1.FieldValues['Tutor'];
Jahrgang2 := Table1.FieldValues['Klasse'];
if concat(Name1,Vorname1) > concat(Name2,Vorname2) then //Vergleichen
begin
Table1.GotoBookmark(Pos1); // Tauschvorgang
Table1.FieldValues['Nachname'] := Name2;
Table1.FieldValues['Vorname'] := Vorname2; //Auftreten der Exception
Table1.FieldValues['Tutor'] := Tutor2;
Table1.FieldValues['Jahrgang'] := Jahrgang2;
Table1.GotoBookmark(Pos2);
Table1.FieldValues['Nachname'] := Name1;
Table1.FieldValues['Vorname'] := Vorname1;
Table1.FieldValues['Tutor'] := Tutor1;
Table1.FieldValues['Jahrgang'] := Jahrgang1;
end;
if concat(Name1,Vorname1) = concat(Name2,Vorname2) then // für den Fall komplett gleicher Namen
if concat(Name1,Vorname1,Tutor1) > concat(Name2,Vorname2,Tutor2) then
begin
Table1.GotoBookmark(Pos1); // Tauschvorgang
Table1.FieldValues['Nachname'] := Name2;
Table1.FieldValues['Vorname'] := Vorname2;
Table1.FieldValues['Tutor'] := Tutor2;
Table1.FieldValues['Jahrgang'] := Jahrgang2;
Table1.GotoBookmark(Pos2);
Table1.FieldValues['Nachname'] := Name1;
Table1.FieldValues['Vorname'] := Vorname1;
Table1.FieldValues['Tutor'] := Tutor1;
Table1.FieldValues['Jahrgang'] := Jahrgang1;
end;
Pos1 := Pos2; // Positionstausch, damit der Algorithmus wirklich hochzählt
end;
end;
Ich hoffe mal, daraus ist alles ersichtlich.
So long
Kai