Avatar billede anold Nybegynder
09. februar 2001 - 09:06 Der er 5 kommentarer og
1 løsning

Index is out of date

Jeg har et menu valg hvor brugeren kan sortere posterne i en database efter navn,klub eller række

i min database har jeg oprettet et sekunder index det hedder Spillernavnindex

I min kode står der :

procedure TFrmOpret.Sortereefternavn1Click(Sender: TObject);
begin
DataModule1.TbSpiller.IndexFieldNames := \'SpillerNavn\';
DataModule1.TbSpiller.First;
end;

men når jeg aktivere menupunktet så får jeg en fejl der hedder :

Index is out of data. Index:SpillerNavnIndex.

Hvad er det jeg gør galt ???

sorteringen har jeg lavet
Avatar billede pellelil Nybegynder
09. februar 2001 - 09:13 #1
Hvorfor ikke bare bruge en TQuery ? Den er nemmere og hurtigere (i et C/S miljø), og så krummer den ikke i sengen :-)

<SNIP>
SELECT bla, bla, bla FROM Tabel
Where Betingelse = Opfyldt
ORDER BY Klub, Navn
</SNIP>
Avatar billede martinlind Nybegynder
09. februar 2001 - 09:34 #2
Prøv en anden base end Paradox, det er et tilbagevendene problem paradox har at den siger \"index out of date\". Brug evt. InterBase 6 den er også integeret i delphi, er et borland produkt og den er Open Source

/Martin
Avatar billede anold Nybegynder
09. februar 2001 - 09:35 #3
Hej pellelil nu har jeg rystet dynen for krummer og brugte kon..... :-)
er der ikke noget med at man skal close sql eller hvad ??
Avatar billede anold Nybegynder
09. februar 2001 - 09:38 #4
ok jeg fant løsningen i en gamme delphi bibel
Avatar billede pellelil Nybegynder
09. februar 2001 - 09:53 #5
martinlind> Vi kan godt blive enig om at InterBase er at fortrække frem for Paradox, men det er trods alt muligt at udvikle (relativ) store applikationer med Paradox. Når dette er sagt så køre InterBase 6 med IBX som en drøm.

anold> Nu har du fundet ud af det, men som fingerer regel kan man sige at du først bygger din SQL (Query1.SQL.ADD....) hvorefter du klargøre denne \"Query1.Prepare\", og så kalder du \"Query.Open\". Når du er færdig med at bruge din Query vil det være naturlig at lukke denne (på samme måde som det vil være naturlig at lukke en TTable).

Hvis du udvikler progarmmer ved brug at C/S baserede database (så som InterBase og MS-SQL) så er TTable bandlyst. Du kan godt bruge dem, men i forhold til Query så har disse ofte en stort overhead (for InterBase har jeg hørt tal omkring de 30%). Dette betyder ikke noget i et netværk med 5-10 personer, men med 50-200 personer er det straks en anden sag.
Avatar billede martinlind Nybegynder
09. februar 2001 - 10:11 #6
pellelil >> Jeg ved det kører selv med den, den er \"FED\". Mht. TQuery, så kører men kun prepare hvis men har parametere i sit statement et almindeligt select * uden begrænsninger behøver ikke prepare. iøvrigt kører delphi selv en prepare hvis det er nødvendigt.

Query1.Close;
Query1.SQL.Text := \'SELECT * FROM Tabel\'
Query1.Open;

Dette virker fint og er lidt nemere en add for så skal men huske clear hvis det er noget der kører flere gange.

Mht. paradox, så kører den fint men har et problem med index out of date, men jeg kom til at se at der stod out of data, så det er nok i virkeligheden for di det er defineret forkert, der er sikkert ikke sat kryd i \"maintaint\" eller hvad det nu lige heder, og så skal du jo selv køre en genereing

/Martin

/Martin
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester