Hola.
He creado una pequeña aplicación para uso propio que tira de MySql para guardar una lista de Archivos de respaldo en DVD.
Hasta ahora tenía un form principal y un DataModule. En este último un método que es que uso para recoger y guardar datos en la tabla.
Código Delphi
[-]
procedure TTDM.GetSql(consulta:string; var ds:Tdataset);
begin
if not ADCON.Connected then
ADCON.Connected:=true;
ADQ.Close;
adq.SQL.Clear;
adq.SQL.Text:=consulta;
adq.Open;
ds:= adq;
END;
El problema viene cuando al crear una nueva form donde obtengo una lista de archivos agrupados por categorías con el núm de elementos:
Código Delphi
[-]Procedure Tform4.cargaCat;
var
s: string;
ds: TdataSet;
begin
s:='Select Categoria, count(*) as n from catdvd group by categoria';
ds:=Tdataset.Create(self);
Tdm.GetSql(s,ds);
with ListBox1 do
begin
items.Clear;
ds.First;
while not ds.Eof do
begin
s:=ds.FieldByName('categoria').AsString;
s:=s+' ('+ds.FieldByName('n').AsString+')';
items.Add(s);
ds.Next;
end;
end;
ds.Free;
end;
Aquí va todo correctamente, se muestran las categorías y todo.
Pero tras cerrar esta form, cuando hago cualquier nueva consulta desde la form principal da un error de "Access Violation at address..."
Esto pasa siempre que invoco al form de categorías. Y pasa al intentar cerrar el AdoQuery para una nueva consulta.
¿ que puede ser ?
He mirado todo, que no se quede abierto ningun DataSet, que la form de categorías se libere tras cerrarla y no doy con el problema.