12. januar 2005 - 10:23Der er
13 kommentarer og 1 løsning
Null længe streng i database giver problemer med ADO
Jeg eksperter.
Jeg har et lille problem. Jeg roder lidt rundt med en Access database og til at komme i kontakt bruger jeg ado.
Jeg giver lige et uddrag :
Function TForm1.GetInfoFromID(id : integer) : TStringList; var Q1: TADODataset; TS : TStringList; begin Q1 := TADODataset.Create(Self); Q1.Connection := ADOConnection1; Q1.CommandText := 'SELECT * FROM [Music] WHERE ID = ' + IntToStr(ID); Q1.Open;
TS := TStringList.Create; If not Q1.Eof then Begin TS.Add(Q1['Artist']); TS.Add(Q1['Title']); TS.Add(Q1['Title2']); TS.Add(Q1['Genre']); TS.Add(Q1['Rate']); end; GetInfoFromID := TS; //TS.Free; Q1.Free; end;
------------------------------------
Problemet ligger så i at hvis et af felterne ikke indeholder noget tekst kommer den ud med en "invalid variant type conversion" fejl.
er dine felter sat til required?,når du loader data ind i dine felter og de er dat til required for man netop denne fejlmelding, ligeledes når man prøvar at gemme data.
Når nu jeg retunere en TStringList i min funktion kan jeg jo ikke ".Free" den. Giver det nogle problemer? Burde jeg måske lave min funktion på en anden måde?
Tja, det giver jo noget hukommelse som ikke bliver frigivet, og hvis du bruger den funktion meget og den indeholder meget data, så render det jo op i den sidste endne.
Du burde måske i stedet for nok oprette din som en global variabel eller nok endnu bedre angive den som en "var" til din GetInfoFromID procedure. Så opretter og Free'er du den jo i den procedure som kalder din GetInfoFromID funktion.
Du kunne måske lave det som en record i stedet for. Prøv og læs om det i hjælpen for at se om det er noget du måske kan bruge (kender jo ikke så meget til dit program).
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.