Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   try y catch en una consulta (https://www.clubdelphi.com/foros/showthread.php?t=48766)

rodrigodeoz 03-10-2007 17:37:02

try y catch en una consulta
 
Como puedo utilizar el try y catch en una consulta sql para actualizar
Ejemplo:
como lo podria implementar en este Query
Código Delphi [-]
 with dm.qadulto do begin
      close;
        sql.Clear;
      with Params.CreateParam(ftMemo,'x1',ptUnknown)do
        asMemo := memo5.Text;
      sql.add('update nino set pad=:x1');
      SQL.Add('WHERE cve_cte=:cv');
      parambyname('cv').Value:=cni;
      execsql;
    end;

Bueno espero me puedan ayudar, no se nada sobre estos metodos en delphi, lo que mas problema me causa es la variable donde se almacena el error

maeyanes 03-10-2007 17:46:36

Hola...

Puedes hacerlo así:

Código Delphi [-]
with dm.qadulto do
  try
    Close;
    SQL.Clear;
    Params.CreateParam(ftMemo, 'x1', ptnknown).AsMemo := memo5.Text;
    SQL.Add('update nino set pad = :x1');
    SQL.Add('where cve_cte = :cv');
    ParamByName('cv').Value := cni;
    ExecSQL
  except
    ShowMessage('Ocurrió un error actualizando datos')
  end


Saludos...

rodrigodeoz 03-10-2007 18:02:56

oies puse el codigo asi como lo escribiste y me marca error no compila.... :(

maeyanes 03-10-2007 18:17:34

Hola...

Y que error te marca?

El código es el mismo que tu pusiste, lo único que hice fue meterlo dentro de un try..except...


Saludos...

rodrigodeoz 03-10-2007 18:31:51

me marca Procedure no found

maeyanes 03-10-2007 18:36:21

Y cual es el procedimiento que no encuentra?

Te debe decir el nombre...

Mayormente cuando no se encuentra un procedimiento es por que falta agregar la unidad donde se encuentra este al uses de la unidad donde lo estás llamando...

rodrigodeoz 04-10-2007 16:49:44

en el Except me marca ese error

duilioisola 04-10-2007 17:04:03

Prueba a poner en el USES
Dialogs

Código Delphi [-]
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ...

Lepe 04-10-2007 18:24:37

¿Esto no funciona?
Código Delphi [-]
 with dm.qadulto do begin
      close;
        sql.Clear;
      sql.add('update nino set pad=:x1');
      SQL.Add('WHERE cve_cte=:cv');
      parambyname('x1').asString := memo5.Text;
      parambyname('cv').Value:=cni;  // intenta usa AsInteger, AsString... según el tipo de "cve_cte"
      execsql;
    end;

Lo digo porque al asignar el sql, dephi crea los parámetros.
Al usar "parambyname('x1').asString" delphi asigna el tipo de parámetro (ftMemo, ftInteger, etc).

¿de qué tipo es el campo "pad" ? ¿Memo, char, varchar?
Intuyo que hay una confusión entre el tipo de campo de la base de datos y el control usado para ver y modificar el texto.

Si en la base de datos tienes un campo de tipo Memo, en el sql tendrás que usar un parambyname('x1').AsMemo.

Si en la base de datos tienes un campo de tipo varchar, char(200), etc, entonces debes usar parambyname('x1').AsString

Saludos


La franja horaria es GMT +2. Ahora son las 06:59:24.

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