Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2003
pepeperezj pepeperezj is offline
Registrado
 
Registrado: dic 2003
Posts: 2
Poder: 0
pepeperezj Va por buen camino
Question Problema con ADO

Hola, estoy empezando con bases de datos bajo delphi y tengo un
problemilla.

Tengo una base de datos (bajo mysql) con una tabla que se llama b, con
dos campos aa y bb, los 2 de tipo integer.

Engancho a la base de datos a traves de ODBC con un ADOConnection.

Ahora viene el problema: Tengo 2 botones, uno para añadir registros a
la tabla y otro para visualizar el contenido de los registros del
campo bb de la tabla:

CODIGO PARA VER CONTENIDO DEL CAMPO BB:
-----------------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select bb from b');
adoquery1.Open;
for i:=1 to adoquery1.RecordCount do
begin
listbox1.items.add(inttostr(adoquery1.recordset.fields[0].Value));
adoquery1.Recordset.MoveNext;
end;
adoquery1.Close;
end;

CODIGO PARA AÑADIR UN REGISTRO:
-----------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into b values (8,8)');
adoquery1.ExecSQL;
adoquery1.Close;
end;


PROBLEMA:
-------------------
Pincho en button2 todas las veces que quiero y funciona perfectamente.
A continuacion pincho en button1 y me carga los valores en una lista
sin problemas. PERO si ahora pincho de nuevo en button2 me da el
mensaje siguiente:

ACCESS VIOLATION AT ADDRESS 1F453E6E IN MODULE MSADO15.DLL


¿Que me falta?

Salu2.
Responder Con Cita
  #2  
Antiguo 21-12-2003
pepeperezj pepeperezj is offline
Registrado
 
Registrado: dic 2003
Posts: 2
Poder: 0
pepeperezj Va por buen camino
Cool

Se me olvidaba, utilizo Delphi 7 y MySQL 4.

Salu2.
Responder Con Cita
  #3  
Antiguo 21-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Quien sabe, quizá por culpa de los campos persistentes, ...

En todo caso, ¿ hay alguna razón para aprovechar tanto un TADOQuery ?. Si simplemente pones 2 TADOQuery, uno para las consultas y otro para las inserciones, te ahorraras este problema.

Además te recomiendo que no modifiques el contenido de la propiedad SQL. Simplemente pón consultas parametrizadas. Algo del tipo :

Consulta : SELECT * FROM B WHERE FECHA = :FECHA

Inserción : INSERT INTO B (CAMPO1, CAMP2) VALUES (:CAMPO1, :CAMPO2)

Ahora el código de los botones te quedará :

Código:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  adoConsulta.Params.ParamValues['FECHA'] := Date;
  adoConsulta.Open;
  for i:=1 to adoConsulta.RecordCount do begin
    listbox1.items.add(adoConsulta.FieldByName('CAMPO1').AsString);
    adoConsulta.Recordset.MoveNext;
  end;
  adoConsulta.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  adoInsercion.Params.ParamValues['CAMPO1'] := 8;
  adoInsercion.Params.ParamValues['CAMPO2'] := 8;
  adoInsercion.ExecSQL;
end;
Saludos
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:34:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi