ZeosLib, mysql ayuda.
Publicado por Oscar (1 intervención) el 15/02/2009 22:18:42
Saludos..
Veran mi problema es el siguiente:
Tenia una aplicacion hecha para fibrebird, y usaba los controles TIBQUERY
pasando estos objetos a una funcion que solo le agrebana los comandos necesarios y ejecutaba el sql.
El problema ahora es que lo estoy pasando a Mysql. Para esto baje el ZeosDBO 6.6.4 y utiizo objetos TZQUERY, en lugar de TIBQUERY.
veran el problema surge cuando hago esto.....
en un DataModule tengo lo siguiente
mi objeto zqGridInventario (TZQUERY) y las siguientes funciones.......
//el comando es opcional.......
function TMD.ActualizarGridInventario(Comando: String): boolean;
var
Campos : String;
begin
Campos := 'ID, CVE_PROD, DESCRIPCION, STATUS, STOCK, EXISTENCIA ';
if(Comando<>'') then
begin
Result := MD.RefreshQuery( zqGridInventario, Comando );
Exit;
end;
// AQUI MARCA ACCESS VIOLATION AL OBJETO zqGridInventario, como si no existiera.
if( zqGridInventario.SQL.Text = '' ) then
begin
zqGridInventario.sql.Text := 'SELECT ' + Campos + 'FROM INVENTARIO ' +
' ORDER BY DESCRIPCION ';
end;
//aqui tambien marca access violation
if( not self.ZQGridInventario.Active ) then
zQGridInventario.Active := true;
Result := RefreshQuery( self.zqGridInventario );
end;
function TMD.RefreshQuery( Q: TZQUERY; Comando: String ): boolean;
var
Bm : TBookMarkStr;
begin
Bm := Self.GetBookMark ( Q ) ; // estas fnciones estan bien... no hay error ahi....
if(Comando<>'') then
begin
Result := Self.doSelect(Q, Comando); //funcion bien........ solo pasa el comando al objeto.
Exit;
end;
Q.Close;
Q.Open;
RestoreBookMark(Q, Bm); //regresar el cursor al registro activo.....
Result := not Q.IsEmpty;
end;//end proc.........
y en el formulario principal hago esta llamada :
procedure TfrMain.Algo();
begin
MD.ActualizarGridInventario; //se muere en las lineas marcadas......
end;
El punto es que el programa se muere marcando un error al momento de hacer una refrencia al objeto zqGridInventario, ya sea desde dentro del DataModule o desde otro formulario,
como si este objeto no se pudiera pasar como parametro a otra funcion o no se hubiera creado. Lo raro es que el objeto o compoponente si existe, y si esta asociado con un ZConnection a mysql, y si le doy active = true, el ZQGRIDINVENTARIO se habre perfectamente en tiempo de diseño, mostrando la informacion que quiero, solo en tiempo de ejecucion es cuando se muere...
cualquier ayuda de porque se muere gracias de antemano....
uso mysql 5, y mi ZConection esta configurado asi:
ZConnection1.Protocol := 'mysql'; //tambien le pongo mysql-5, y pasa igual.....
ZConnection1.Database := 'inventario';
ZConnection1.HostName := Server;
ZConnection1.user := 'root';
ZConnection1.password := 'admin';
ZConnection1.Connected := true;
ni siquiera me permite hacer esto
MD.zqGRIDInventario.close;
MD.zqGRIDInventario.Open;
Veran mi problema es el siguiente:
Tenia una aplicacion hecha para fibrebird, y usaba los controles TIBQUERY
pasando estos objetos a una funcion que solo le agrebana los comandos necesarios y ejecutaba el sql.
El problema ahora es que lo estoy pasando a Mysql. Para esto baje el ZeosDBO 6.6.4 y utiizo objetos TZQUERY, en lugar de TIBQUERY.
veran el problema surge cuando hago esto.....
en un DataModule tengo lo siguiente
mi objeto zqGridInventario (TZQUERY) y las siguientes funciones.......
//el comando es opcional.......
function TMD.ActualizarGridInventario(Comando: String): boolean;
var
Campos : String;
begin
Campos := 'ID, CVE_PROD, DESCRIPCION, STATUS, STOCK, EXISTENCIA ';
if(Comando<>'') then
begin
Result := MD.RefreshQuery( zqGridInventario, Comando );
Exit;
end;
// AQUI MARCA ACCESS VIOLATION AL OBJETO zqGridInventario, como si no existiera.
if( zqGridInventario.SQL.Text = '' ) then
begin
zqGridInventario.sql.Text := 'SELECT ' + Campos + 'FROM INVENTARIO ' +
' ORDER BY DESCRIPCION ';
end;
//aqui tambien marca access violation
if( not self.ZQGridInventario.Active ) then
zQGridInventario.Active := true;
Result := RefreshQuery( self.zqGridInventario );
end;
function TMD.RefreshQuery( Q: TZQUERY; Comando: String ): boolean;
var
Bm : TBookMarkStr;
begin
Bm := Self.GetBookMark ( Q ) ; // estas fnciones estan bien... no hay error ahi....
if(Comando<>'') then
begin
Result := Self.doSelect(Q, Comando); //funcion bien........ solo pasa el comando al objeto.
Exit;
end;
Q.Close;
Q.Open;
RestoreBookMark(Q, Bm); //regresar el cursor al registro activo.....
Result := not Q.IsEmpty;
end;//end proc.........
y en el formulario principal hago esta llamada :
procedure TfrMain.Algo();
begin
MD.ActualizarGridInventario; //se muere en las lineas marcadas......
end;
El punto es que el programa se muere marcando un error al momento de hacer una refrencia al objeto zqGridInventario, ya sea desde dentro del DataModule o desde otro formulario,
como si este objeto no se pudiera pasar como parametro a otra funcion o no se hubiera creado. Lo raro es que el objeto o compoponente si existe, y si esta asociado con un ZConnection a mysql, y si le doy active = true, el ZQGRIDINVENTARIO se habre perfectamente en tiempo de diseño, mostrando la informacion que quiero, solo en tiempo de ejecucion es cuando se muere...
cualquier ayuda de porque se muere gracias de antemano....
uso mysql 5, y mi ZConection esta configurado asi:
ZConnection1.Protocol := 'mysql'; //tambien le pongo mysql-5, y pasa igual.....
ZConnection1.Database := 'inventario';
ZConnection1.HostName := Server;
ZConnection1.user := 'root';
ZConnection1.password := 'admin';
ZConnection1.Connected := true;
ni siquiera me permite hacer esto
MD.zqGRIDInventario.close;
MD.zqGRIDInventario.Open;
Valora esta pregunta


0