10. oktober 2001 - 16:20Der er
8 kommentarer og 1 løsning
Brug samme variabel flere gange
Jeg bruger q på følgende måde som variabel til at hente værdier i en access database. Men jeg vil gerne bruge samme variabel til at hente andre værdier. Hvorfor kan jeg ikke det, når jeg free\'er den til sidst.
Jeg får en access vialation hvis jeg prøver at create en ny q.
q := frmDatabase.QueryMedlem.Create(nil); q.DatabaseName := frmdatabase.QueryMedlem.DatabaseName; q.SQL.Clear; q.SQL.Add(\'SELECT navn FROM medlem WHERE (stregkode=\'\'\'+stregkode+\'\'\')\'); q.open; result := q.FieldByName(\'navn\').AsString; q.close; q.free;
Jeg bruger Delphi 6. Hvad mener du med break on exception. Jeg har prøvet at sætte et break, og så steppe med F7, for at se hvor det går galt, og det gør det lige når den skal til at create en ny q.
Prøv og lav din q1.Close noget før. Jeg havde et lign. problem, dog bare med ADO
q := frmDatabase.QueryMedlem.Create(nil); q.DatabaseName := frmdatabase.QueryMedlem.DatabaseName; q.close; q.SQL.Clear; q.SQL.Add(\'SELECT navn FROM medlem WHERE (stregkode=\'\'\'+stregkode+\'\'\')\'); q.open; result := q.FieldByName(\'navn\').AsString; q.free;
Du kan sætte delphi til \"Stop on Delphi exception\"
Nåe ja, du skal prøve at lave en q.Close i linen før du laver en Q.Free:
q := frmDatabase.QueryMedlem.Create(nil); q.DatabaseName := frmdatabase.QueryMedlem.DatabaseName; q.close; q.SQL.Clear; q.SQL.Add(\'SELECT navn FROM medlem WHERE (stregkode=\'\'\'+stregkode+\'\'\')\'); q.open; result := q.FieldByName(\'navn\').AsString; q.close; q.free
Det er fordi at du siger: q := frmDatabase.QueryMedlem.Create(nil); Det kan man ikke. Create er en constructor som skal kaldes fra en klasse og ikke fra et object.
Du skal istedet for sige: Q := TQuery.Create(nil); Q.SQL.Assign(frmDatabase.QueryMedlem.SQL);
og så fremdeles hvis der er flere properties som du vil have med over.
Jeg har skrevet følgende: q := TQuery.Create(nil); q.SQL.Assign(frmDatabase.QueryMedlem.SQL); q.close; q.SQL.Clear; q.SQL.Add(\'SELECT medlemsnummer FROM medlem WHERE (stregkode=\'\'\'+stregkode+\'\'\')\'); q.open; result := q.FieldByName(\'medlemsnummer\').AsInteger; q.close; q.free;
Når jeg når til q.open, får jeg en fejl der siger: \"Cannot load an IDAPI service library\"
Jeg går her ud fra at din QueryMedlem er en almindelig TQuery. Hvis det er af en anden type, så skal du erstatte TQuery med den pågældende type som du bruger. Og HUSK at overføre alle properties fra din QueryMedlem til koden istedet.
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.