Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error al borrar con Adoquery (https://www.clubdelphi.com/foros/showthread.php?t=40452)

hernitz 16-02-2007 19:51:35

Error al borrar con Adoquery
 
A ver si alguien puede darme una mano. Tengo una base de datos sql con una tabla con datos que quiero borrar.

Tengo un adoquery que contiene lo siguiente:
DELETE FROM MATRICULA
WHERE MATRICULA=:MATRICULA

cuando lo llamo en la aplicacion me ejecuta bien el borrado de datos pero me da el siguiente error:
adoquery1:CommandText does not return a result set

Lo llamo de la siguiente manera en la aplicacion:
adoquery1.Close;
adoquery1.Parameters.ParamByName('MATRICULA').Value:=dbedit2.Text;
adoquery1.open;

Estoy seguro que es de la forma en que lo estoy llamando desde la aplicacion. Les agradecere cualquier sugerencia
Desde ya muchas gracias.

Caral 16-02-2007 19:58:24

Hola
Asi hago yo para borrar:
Código Delphi [-]
procedure TFOrdProd.Button5Click(Sender: TObject);
begin
    If MessageDlg('¿Está seguro que desea eliminar la pieza # '+QOrdenProdCompraCodParte.AsString+' de la orden ',mtConfirmation,[mbYes,mbNo],0) = mrYes then
   begin
      DataModule1.AC1.BeginTrans;
      try
         QTemp.SQL.Text := 'Delete * from OrdenProdCompra where Numero = '+QOrdenProdCompraNumero.AsString;
         QTemp.ExecSQL;
         DataModule1.AC1.CommitTrans;
      except
         on E:Exception do
         begin
            DataModule1.AC1.RollbackTrans;
            MessageDlg('Se ha producido un error, por favor contacte al administrador.',mtError,[mbok],9);
         end;//on
      end; //try
      QOrdenProdCompra.Close;
      QOrdenProdCompra.Open;
   end;
end;
Revisalo, tal vez te guie
Saludos

luisgutierrezb 16-02-2007 20:08:58

una forma de ahorrarte el componente es con el metodo Execute de la conexion, por ejemplo:

Código Delphi [-]
adoconnection1.execute := 'delete from tabla where algo = ' + edtAlgo.Text;

rruz 16-02-2007 20:38:16

En lugar de llamar al metodo Open debes Usar ExecSql ya que luego de ejecutar el metodo Open la aplicacion espera de regreso un cursor.

Guia Practica:

Usa Open en sentencias sql de tipo Select ...'

Usa ExecSql en sentencias de tipo 'Update, Insert, Delete, Etc'

Saludos.

hernitz 16-02-2007 23:48:48

Muchas Gracias a todos! ya pude solucionarlo!.

Maibok 07-03-2007 21:29:42

A mi lo mismo pero no he podido solucionarlo. Cuando hago un INSERT en una tabla lo inserta bien, pero me salta un error diciendo que el adoquery no devuelve ningún valor. En parte es lógico porque es una instrucción de insert y no devuelve nada en una tabla.

Cómo puedo hacer para que no me salta ese error al usar un adoquery???


Y aunque no se si es el sitio indicado. Sabéis cómo puedo hacer para captar los errores o mensajes de información de MySQL para poder modificarlos y mostrarlos yo desde delphi antes de que me salte el error de mysql???. Es decir, que si mysql me dice que no puedo insertar algo porque violo integridad referencial, poder yo modificar lo que pone ese mensaje para hacerlo más legible al usuario.

vtdeleon 07-03-2007 22:55:13

Saludos
Cita:

Empezado por Maibok
Cómo puedo hacer para que no me salta ese error al usar un adoquery???

La respuesta es:
Cita:

Empezado por rruz
Guia Practica:

Usa Open en sentencias sql de tipo Select ...'

Usa ExecSql en sentencias de tipo 'Update, Insert, Delete, Etc'

Cita:

Empezado por Maibok
abéis cómo puedo hacer para captar los errores o mensajes de información de MySQL para poder modificarlos y mostrarlos yo desde delphi antes de que me salte el error de mysql???. Es decir, que si mysql me dice que no puedo insertar algo porque violo integridad referencial, poder yo modificar lo que pone ese mensaje para hacerlo más legible al usuario.

Claroo, usando Try Except y capturando el error.
Código Delphi [-]
try
 QuerySql.Open
except on
  Exception:E do 
  begin
    ShowMessage('El mensaje que quieras');
  end;
end;
Debes saber qué tipo de Exception te arroja el componetne o MySQL para poder identificar el tipo de error que te arroja.


La franja horaria es GMT +2. Ahora son las 23:23:55.

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