06. juli 2003 - 17:18Der er
5 kommentarer og 1 løsning
Søgning i en dato giver fejl
En database med en Paradox tabel indeholder en række med en dato som index. Den kan jeg godt søge i, men KUN hvis jeg skriver hele datoen som fx 12-12-1999 skriver jeg bare 12-12 kan min søgning ikke virke. Det gør så ikke så meget, men der kommer en fejl op som stopper programmet. Hvordan kan jeg opsamle den fejl ? VH SprøgeJørgen
var T : TTable; begin T := nil; try try T := TTable.Create(nil); T.DatabaseNameb := 'MyPDoxBase'; T.TableName := 'MyTableName'; DoSomething.... finally if Assigned(T) then T.Close(); FreeAndNil(T); end;{finally} except On E : Exception do ShowMessage('Hovsa, du tastede vist en forkert dato'); end;{except} end;{proc DoSomeStuff}
Datoer i en Paradox database gemmes som decimaltal, hvor heltalsværdien til venstre for kommaet repræsenterer datoen og decimalværdien til højre for kommaet repræsenterer tidspunktet i timer, minutter osv.
Det giver derfor ingen mening at søge på "12-12", da dette ikke er en dato.
Nej det er sandt. Men jeg kan jo ikke forhindre en bruger i at prøve på at skrive 12-12 og så klikke på søg. Men det ser ikke pænt ud med en fejlboks der siger at " det ikke er et dato format". Den som koustoden skriver er nok god men noget over målet. Tablellerne er create og den er nok for svær til mig. VH SpørgerJørgen
type TForm1 = class(TForm) MaskEdit1: TMaskEdit; Button1: TButton; Table1: TTable; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var TestDate: TDate; begin
try // Check om det er en gyldig dato TestDate := StrToDate(MaskEdit1.Text); except // Hvis ikke, så vis fejlmeddelelse og forlad Application.MessageBox('Ugyldig dato', 'Advarsel', mb_OK + mb_IconExclamation); Exit; end;
// Datoen er ok, så søg på den Table1.FindKey([TestDate]);
end;
end. ----------------
Denne løsning vil også give fejl hvis f.eks. der er indtastet "30-02-2003".
Den er godt nok flot. Og så bliver den ved med at virke. Men ikke i Compile mode eller hvad det hedder. Jeg fandt ud af at det er en EConvertErros og så i hjælp under det. Men det hjalp mig nu ikke meget. Tak. VH Sprøgejørgen
Ja, sådan vil det altid være. Det er derfor man kan benytte try-except funktionen til at fange disse "ulovligheder".
Sålænge det virker korrekt når du kører exe-filen direkte, skal du bare være glad.
DevDude
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.