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)
-   -   Problemas con ADO y campo Memo (https://www.clubdelphi.com/foros/showthread.php?t=32925)

aoiTo 21-06-2006 13:21:21

Problemas con ADO y campo Memo
 
Veran estoy haciendo una pequeña aplicacion con Builder y Access. Para ello uso los componentes ADO cocnretamente y todo iba perfecto hasta que he tenido que usar un update. Cocnretamente el codio del TADOQuery es el siguiente:
Código:

DModule->QJuegos->Close();
DModule->QJuegos->SQL->Clear();
DModule->QJuegos->Parameters->Clear();
DModule->QJuegos->SQL->Clear();
DModule->QJuegos->SQL->Add("Update Juegos set Nombre=:NOMBRE, Fecha=:FECHA, Plataforma=:PLATAFORMA, Datos=:DATOS where Id=:ID;");
DModule->QJuegos->ParamCheck=false;
DModule->QJuegos->Prepared=false;
DModule->QJuegos->Parameters->ParamByName("NOMBRE")->Value=FormModJuegos->TxNombre->Text;
DModule->QJuegos->Parameters->ParamByName("FECHA")->Value=FormModJuegos->DTimeFecha->Date;
DModule->QJuegos->Parameters->ParamByName("PLATAFORMA")->Value=FormModJuegos->DBPlataforma->KeyValue;
DModule->QJuegos->Parameters->ParamByName("DATOS")->Value=FormModJuegos->MCompuesto->Text;
DModule->QJuegos->Parameters->ParamByName("ID")->Value=FormIniModJuego->id;
DModule->QJuegos->Prepared=true;
DModule->QJuegos->ExecSQL();

El problema es que cuando realiza el ExecSQL() me aparece este error:
"[Microsoft][Controlador ODBC Microsoft Access]Valor de precision no valido"
Se que el problema es por esta linea:
DModule->QJuegos->Parameters->ParamByName("DATOS")->Value=FormModJuegos->MCompuesto->Text;
Ya que si la quito todo funciona perfectamente. No se si sera por eso, pero el objeto MCompuesto es un TMemo, pero claro, en la BD el campo DATOS es una campo Memo ... no se si sera problema mio, o que el controlador ODBC tiene algun problema con los campos Memo.
¿Alguien podria ayudarme?

Neftali [Germán.Estévez] 21-06-2006 15:36:13

Una pregunta, ¿Cómo tienes configurada la conexión ADO?
Lo digo porque para acceder a ficheros MDB desde ADO creo que es mejor utilizar Jet4 (directa) y no conexión ODBC. Creo que estás dando un rodeo para llegar al mismo sitio.

Podrías probar a cambiar las propiedades de la conexión, a ver si el mismo código te funciona sin utilizar ODBC.

aoiTo 21-06-2006 15:59:02

Bueno e cambiado la cadena de conexion y en vez de usar ODBC, he usado Jet4, con lo que la cadena de conexion que tengo queda asi:
Cita:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\CDs.mdb;Persist Security Info=False
El problema ahora esta en que el campo Memo no es obligatorio en la BD, pero me sale un error cuando no tiene nada escrito en el programa, cocnretamente el error es este:
"El campo juegos.Datos no puede ser un campo de longitud 0"
¿que puedo hacer?


La franja horaria es GMT +2. Ahora son las 07:53:03.

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