Ver Mensaje Individual
  #1  
Antiguo 27-01-2007
chetos7 chetos7 is offline
Miembro
 
Registrado: ene 2007
Posts: 15
Reputación: 0
chetos7 Va por buen camino
Error al saltar de Reporte a Actualizacion de Registro

Hola, asi esta la cosa: Tengo un programa que es sobre un biblioteca, hago un reporte del cual el codigo es el siguiente:
Código Delphi [-]
 modulodedatos.FiltradoL;
   modulodedatos.ADOQuery2.Open;
   modulodedatos.ADOQuery2.First;
   ComboBox1.Items.Clear;
   while not modulodedatos.ADOQuery2.Eof do
   begin
      ComboBox1.Items.Add(modulodedatos.ADOQuery2['Titulo']);
      modulodedatos.ADOQuery2.Next;
   end;
   modulodedatos.ADOQuery2.Close;

El de FiltradoL es el siguiente:
Código Delphi [-]
ADOQUERY2.SQL.Clear;
   ADOQUERY2.SQL.add('select distinct Titulo from libros order by Titulo');

Esos procedimientos para llenar un ComboBox de los registros detitulos diferentes de titulos de libros, de ahi, hago la union de DBGrid con el Adoquery
Código Delphi [-]
 titulo:=ComboBox1.Text;
      modulodedatos.ConsultaLibroTitulo(titulo);
      modulodedatos.midatasource3.DataSet:=modulodedatos.ADOQuery1;
      modulodedatos.ADOQuery1.Open;
      DBGrid1.DataSource:=modulodedatos.midatasource3;

Imprimo el reporte

Código Delphi [-]
 pformareporte.Preview;
   close;
   limpiar;
   modulodedatos.ADOQuery1.Close;
   modulodedatos.miadotable.Active:=False;

De ahi me voy a actualizar usuario,primero lo busco

Código Delphi [-]
if modulodedatos.BuscaUsuario(id)=true then
       begin
          edit1.Enabled:=false;
          Button1.Enabled:=false;
          Button4.Enabled:=true;
          Button2.Enabled:=true;
          Button3.Enabled:=true;
          Button5.Enabled:=true;
          edit2.Enabled:=true;
          edit3.Enabled:=true;
          edit4.Enabled:=true;
          edit5.Enabled:=true;
          edit8.Enabled:=true;
          edit9.Enabled:=true;
          edit8.Text:=modulodedatos.miadotable2['ApellidoPaterno'];
          edit9.Text:=modulodedatos.miadotable2['ApellidoMaterno'];
          edit2.Text:=modulodedatos.miadotable2['Nombre'];
          edit3.Text:=modulodedatos.miadotable2['Direccion'];
          edit4.Text:=modulodedatos.miadotable2['Telefono'];
          edit5.Text:=modulodedatos.miadotable2['Email'];
          if modulodedatos.miadotable2['Status']='0' then RadioButton1.Checked:=true
          else radiobutton2.Checked:=true;

El codigo de BuscaUsuario es

Código Delphi [-]
modulodedatos.miadotable2.TableName:='usuarios';
   modulodedatos.midatasource2.DataSet:=miadotable2;
   modulodedatos.miadotable2.Active:=true;
   if modulodedatos.miadotable2.Locate('IdUsuario',id,[]) = true then
      BuscaUsuario:=true
   else
      BuscaUsuario:=false;

Hasta ahi todo va bien, pero ya que cambie algunos campos de datos, le doy actualizar que hace lo siguente:

Código Delphi [-]
id:=StrToint(edit1.Text);
      apaterno:=edit8.Text;
      amaterno:=edit9.Text;
      nombre:=edit2.Text;
      dir:=edit3.Text;
      tel:=edit4.Text;
      mail:=edit5.Text;
      if (RadioButton1.Checked= true) then
         status:='0'
      else
         status:='1';
      modulodedatos.ActualizaUsuario (id,apaterno,amaterno,nombre,dir,tel,mail,status);

Y ActualizaUsuario tiene

Código Delphi [-]
 modulodedatos.ADOQuery1.SQL.Clear;
    modulodedatos.ADOQuery1.SQL.Add('update usuarios set ');
    modulodedatos.ADOQuery1.SQL.Add('ApellidoPaterno=:apaterno,');
    modulodedatos.ADOQuery1.SQL.Add('ApellidoMaterno=:amaterno,');
    modulodedatos.ADOQuery1.SQL.Add('Nombre=:nombre,');
    modulodedatos.ADOQuery1.SQL.Add('Email=:mail,');
    modulodedatos.ADOQuery1.SQL.Add('Direccion=:dir,');
    modulodedatos.ADOQuery1.SQL.Add('Telefono=:tel,');
    modulodedatos.ADOQuery1.SQL.Add('Status=:status');
    modulodedatos.ADOQuery1.SQL.Add(' where usuarios.IdUsuario=:id');
    modulodedatos.ADOQuery1.Parameters.ParamByName('id').Value := id;
    modulodedatos.ADOQuery1.Parameters.ParamByName('apaterno').Value := apaterno;
    modulodedatos.ADOQuery1.Parameters.ParamByName('amaterno').Value:= amaterno;
    modulodedatos.ADOQuery1.Parameters.ParamByName('nombre').Value := nombre;
    modulodedatos.ADOQuery1.Parameters.ParamByName('mail').Value := mail;
    modulodedatos.ADOQuery1.Parameters.ParamByName('dir').Value := dir;
    modulodedatos.ADOQuery1.Parameters.ParamByName('tel').Value := tel;
    modulodedatos.ADOQuery1.Parameters.ParamByName('status').Value := status;
    modulodedatos.ADOQuery1.ExecSQL;
    modulodedatos.miadotable2.Refresh;

Pero al momento de pasar al Refresh me manda el error:
Código PHP:
...EAccessViolation with message AccessViolation at adress 1F453E7E in module msado15.dllWrite of address 00CD1010Process stopped... 
No se que tengo mal, tal vez hay algo mal en el reporte o algo asi, espero no abrumarlos tanto, que le entiendan al codigo y que me puedan ayudar. Por separado los hace bien, pero cuando sigo esa secuencia de funciones falla, gracias por su tiempo y atencion
Responder Con Cita