PDA

Ver la Versión Completa : problema con campo MEMO


decuteo
02-06-2008, 20:30:29
Bueno, el título creo que lo dice todo.

Entorno : Delphi 7 conexión ODBC a MySQL 5

Tengo hecha la conexión ytodo funciona OK hasta que le inserto un campo memo, entonces el código que veis me da un error y lo único que hay nuevo (con respecto a la rutina operativa) es la inserción de la linea que esta en rojo, (en la tabla de MySql el campo es del tipo TEXT).
He estado buscando información pero no he encontrado nada, lo curioso es que el resto de campos se actualizan con los datos, excepto el que os comento.

En el formulario el componente que aloja los datos es del tipo Tmemo. Un detalle curioso es que si en vez de poner;

Aquery1.Parameters.ParamByName('dato6').Value:=links.Text;

pongo

Aquery1.Parameters.ParamByName('dato6').Value:=links.Lines;

el compilador me da error por incompatibilidad de tipos de variable Variant y String

Esto es lo que tengo puesto


procedure TForm1.anadirClick(Sender: TObject);
begin
try
screen.Cursor:=crSQLWait;
AQuery1.SQL.Clear;
Aquery1.SQL.Add('INSERT INTO tabla (eh_des,eh_cat,eh_tip,eh_sim,eh_desc,eh_link,eh_post,eh_ubic)'+
' VALUES (:dato2,:dato3,:dato4,:dato5,:dato6,:dato7,:dato8,:dato9)');
Aquery1.Parameters.ParamByName('dato2').Value:=fecha.Date;
Aquery1.Parameters.ParamByName('dato3').Value:=descripcion.Text;
Aquery1.Parameters.ParamByName('dato4').Value:=categoria.Items[categoria.ItemIndex];
Aquery1.Parameters.ParamByName('dato5').Value:=simulador.Items[simulador.ItemIndex];
Aquery1.Parameters.ParamByName('dato6').Value:=links.Text;
Aquery1.Parameters.ParamByName('dato7').Value:=Descargado.Checked;
Aquery1.Parameters.ParamByName('dato8').Value:=Post.Text;
Aquery1.Parameters.ParamByName('dato9').Value:=ubicacion.Text;
AQuery1.ConnectionString:=server(1);
Aquery1.Open;
except
on E: Exception do
begin
Application.MessageBox( 'No hay comunicación con el servidor o no se grabaron los datos correctamente', 'ERROR GRAVE', MB_ICONSTOP );
desconectar();
end;
end;
botones(0,0,1,1,1);
screen.Cursor:=crDefault;
end;
Gracias por vuestra ayuda.

Saludos
Juanjo

decuteo
03-06-2008, 13:17:18
ya encontré el problema.

La instrucción

Aquery1.ConnectionString:=....

debe ir inmediatamente después de

Aquery1.SQL.Clear

(?)

No me pregunten porqué, pero así funciona.

Saludos
Juanjo