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)
-   -   Ayuda con Update aun memo (https://www.clubdelphi.com/foros/showthread.php?t=48445)

rodrigodeoz 25-09-2007 17:03:46

Ayuda con Update aun memo
 
Saludos!!!

Espero alguien me pueda ayudar.

Tengo un problema al momento de actualizar un campo de tipo memo en en mi BD tengo la siguente consulta:

Código Delphi [-]
    with dm.qadulto do begin
        close;
        sql.Clear;
        sql.add('update nino set motivo=:0');
        SQL.Add('WHERE cve_cte=:cv');
        parambyname('cv').Value:=cni;
        parambyname('0').AsMemo:=mc.Text;
        execsql;
    end;

La consulta jala bien pero si mto mas de 6 lineas de texto me marca AccesViolation, y necesito poder guardas mas de 6 lineas.
el componente es Query(DBTable). si laguien me puede decir otro metodo se lo agradeceria mucho

jhonny 25-09-2007 17:54:20

La verdad es que no lo he probado, pero ¿te funcionaria asi?

Código Delphi [-]
 with dm.qadulto do begin
        close;
        sql.Clear;
        sql.add('update nino set motivo=:0');
        SQL.Add('WHERE cve_cte=:cv');
        parambyname('cv').Value:=cni;
        parambyname('0')..Assign(mc);
        execsql;
    end;

espero que si ;).

duilioisola 25-09-2007 18:02:48

Qué base de datos utilizas?
- Quizas tenga algún tipo de restricciones con respecto a los memos.

Cómo está definida la tabla nino?
- Si el campo cve_cte de la tabla está definido como BLOB no deberías tener problemas.
- Si está definido como un string grande, quizás hayas alcanzado el límite.

rodrigodeoz 25-09-2007 18:13:44

utilizo Acces, el campo cve_cte es el indice de la tabla, el campo donde guardo el texto es en motivo y este esta definido como memo, y no es por el limite, en un principio tambien pense en eso, pero me fui directo a la tabla y le escribi mastante texto y si lo guardo bien, y no se que mas hacer :(

jhonny 25-09-2007 18:19:18

Cita:

Empezado por rodrigodeoz (Mensaje 233674)
utilizo Acces, el campo cve_cte es el indice de la tabla, el campo donde guardo el texto es en motivo y este esta definido como memo, y no es por el limite, en un principio tambien pense en eso, pero me fui directo a la tabla y le escribi mastante texto y si lo guardo bien, y no se que mas hacer :(

Hiciste lo que te he sugerido?

rodrigodeoz 25-09-2007 18:25:35

si ya lo hice y me marca error: Cannot assing TMemo to a TParam. :(

jhonny 25-09-2007 18:29:05

Cita:

Empezado por rodrigodeoz (Mensaje 233678)
si ya lo hice y me marca error: Cannot assing TMemo to a TParam. :(

A bueno, ¿Y asi?

Código Delphi [-]
with dm.qadulto do begin
        close;
        sql.Clear;
        sql.add('update nino set motivo=:0');
        SQL.Add('WHERE cve_cte=:cv');
        parambyname('cv').Value:=cni;
        parambyname('0').Assign(mc.Lines);
        execsql;
    end;

Deberia funcionarte.

rodrigodeoz 25-09-2007 18:33:03

Gracias por la atencion prestada, ya he resuelto mi problema es que en lugar de enviar un parametro de tipo .asMemo lo cambie por un Parametro de tipo asBlob y mi consulta quedo asi

Código Delphi [-]
 
with dm.qadulto do begin
        close;
        sql.Clear;
        sql.add('update nino set motivo=:0');
        SQL.Add('WHERE cve_cte=:cv');
        parambyname('cv').Value:=cni;
        parambyname('0').AsBlob:=mc.Text;
        execsql;
    end;

duilioisola 25-09-2007 18:34:44

Código Delphi [-]
sql.add('update nino set motivo=:0');
Esto es una letra O o es un el número 0 (cero)?
Si es un cero, puede ser ese el problema, prueba lo siguiente:
Código Delphi [-]
with dm.qadulto do begin
        close;
        sql.Clear;
        sql.add('update nino set motivo=:motivo');
        SQL.Add('WHERE cve_cte=:cv');
        parambyname('cv').Value:=cni;
        parambyname('motivo').AsMemo:=mc.Text;
        execsql;
    end;

Tambien puedes probar:
Código Delphi [-]
        parambyname('motivo').AsBlob:=mc.Text;

Nota: no te preocupes de que los campos y los parámetros tengan el mismo nombre. El tener el : (dos puntos) adelante ya los diferencia.

rodrigodeoz 25-09-2007 18:54:58

Gracias por la ayuda, mi consulta quedo como el ultimo consejo que medieron :D


La franja horaria es GMT +2. Ahora son las 04:52:03.

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