Fylde data i Paradox-tabel
Jeg har problemer med at fylde en tabel med data.Det er et let omarbejdet eksempel fra bogen Delphi4 Programmering med udvidet antal felter og med mine egne data.
Kun den første linje i datafilen oprettes i tabellen, alle de efterfølgende giver fejl.
Fejlmeldinger:
1. loop:
EDBEnginError with message 'Key violation' Process stopped....
Jeg trykker på OK og derefter F9 for fortsat kørsel.
2. loop
Messagebox vises: Kan ikke oprette tabellen MinDatabase, og derefter:
EDBEnginError with message 'Key violation' Process stopped....
Jeg trykker igen på OK og derefter F9 for fortsat kørsel.
Dette gentages for hver hentede datalinje hvorefter indholdet af databasen vises.
I databasen er da kun første post gemt.
Databasetabellen oprettes således:
TableType := ttParadox;
with FieldDefs do // Beskriv felterne
begin
Clear;
Add('Aar', ftInteger, 0, True);
Add('Fra', ftInteger, 0, False);
Add('Til', ftInteger, 0, False);
Add('Titel', ftString, 24, False);
Add('Forfatter', ftString, 24, False);
Add('Beskrivelse', ftString, 100, False);
end;
with IndexDefs do // Fastlæg primært index
begin
Clear;
Add('', 'Aar', ixPrimary, ixUnique]);
end;
CreateTable; // Opret den beskrevne tabel
tblLand.Free;
-------------------------------------
//Indsæt data i tabellen
for I := 0 to List.Count - 1 do
begin
tblLand.Append; // vedhæft ny post
S := List I];
Position := Pos(';', S); //Find tabulator
DelS := Copy(S, 1, Position - 1);
Delete(S, 1, Position);
tblLand 'Aar'] := StrToInt(DelS);
Position := Pos(';', S);
DelS := Copy(S, 1, Position - 1);
tblLand 'Fra'] := StrToInt(DelS);
Delete(S, 1, Position);
Position := Pos(';', S);
DelS := Copy(S, 1, Position - 1);
tblLand 'Til'] := StrToInt(DelS);
Delete(S, 1, Position);
Position := Pos(';', S);
DelS := Copy(S, 1, Position - 1);
Delete(S, 1, Position);
tblLand 'Titel'] := DelS;
Position := Pos(';', S);
DelS := Copy(S, 1, Position - 1);
tblLand 'Forfatter'] := DelS;
Delete(S, 1, Position);
//Sidste felt fyldes med resten af linjen
tblLand 'Beskrivelse'] := S;
try
tblLand.Post; // Skriv den nye post
except
on EDBEngineError do
begin
MessageDlg('Kunne ikke oprette tabellen '
+ MinDatabase, mtError, mbOk], 0);
tblLand.Cancel; // Annuller den nye post
tblLand.Edit;
Continue;
end;
end;
end;
---------------------------
Data i filen, der læses fra: (Alle er tekststrenge, intet binært indhold, skilletegn: ;)
2011;5;12;Vinderupgaard;Weis Jensen;Meget passende ...
2011;13;28;Udskiftning ;Anders Villadsen;Her fortælles
2011;29;38;Udpluk af Ry;Hans P.;Ud over en beskrivelse af de
2011;39;58;A skal sgu æ;F. B. Johansen;Handler primært om
2011;59;74;En bagersøns;Pedersen;Så kommer turen til
---------------------------------