Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Insertar cadena de carácteres (https://www.clubdelphi.com/foros/showthread.php?t=57322)

carmelina 11-06-2008 19:42:27

Insertar cadena de carácteres
 
Hola a todos!!!

Mi problema es que necesito insertar en mi base de datos una cadena de caracteres, pero esa cadena es una variable, ya que se escribe por teclado.
Mi problema es que usando:
Código:

Query1.SQL.Add('INSERT INTO misvideos VALUES (fecha, nombrevideo, "c:video")');
Query1.ExecSQL;

donde nombrevideo es una variable de tipo String que contendrá la cadena real, esto me inserta nombrevideo, no su contenido. Qué hago para que me inserte su contenido???

Muchas gracias de antemano.

Un Saludo

egostar 11-06-2008 19:58:02

Hola

Código Delphi [-]
Query1.SQL.Add('INSERT INTO misvideos VALUES (fecha, nombrevideo, :RUTA)');
Query1.ParamByName('RUTA').Value := 'c:video'; //Podrias usar un Edit por ejemplo.
Query1.ExecSQL;

Salud OS

carmelina 11-06-2008 20:32:40

Hola;

Muchas gracias pero me da error, yo he insertado estas lineas de codigo:
Código:

Query1.SQL.Add('INSERT INTO misvideos VALUES (:fecha, :nombrevideo, :ruta)');
Query1.Parameters.ParamByName('ruta').value:='c:video';
Query1.Parameters.ParamByName('fecha').value:=fecha;
Query1.Parameters.ParamByName('nombrevideo').value:=nombrevideo;

Pero no me funciona, no se como hacerlo. Si me pudieses ayudar te lo agradeceria mucho.

Un saludo

egostar 11-06-2008 20:50:56

Cita:

Empezado por carmelina (Mensaje 292879)
Hola;

Muchas gracias pero me da error, yo he insertado estas lineas de codigo:

Pero no me funciona, no se como hacerlo. Si me pudieses ayudar te lo agradeceria mucho.

Podrías indicarnos que error es el que se te muestra?, me imagino que debe de ser algo relacionado con el tipo de dato que estas usando.

Por ejemplo, el campo Fecha pudiera ser del tipo Date por lo que deberias de usar algo así

Código Delphi [-]
Query1.Parameters.ParamByName('fecha').value := strtodate(fecha);

Salud OS

carmelina 12-06-2008 11:15:46

Hola de nuevo;

El error que me da es el siguiente:

Project Project1.exe raised exception class EOleException with message 'Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros'. Proceso stopped. Use Step or Run to Continue.

y tambien me aparece:

Project Project1.exe raised exception class EOleException with message
'Objeto Parameter mal definido. Se proporcionó información incompleta o incoherente'. Proceso stopped. Use Step or Run to Continue.

El código utilizado es este:

Código:

fecha:=GetLocalT;
Query1.SQL.Add('INSERT INTO misvideos VALUES (:fecha, :nombrevideo, :ruta)');
Query1.Parameters.ParamByName('fecha').value:=StrToDate(fecha);
Query1.Parameters.ParamByName('nombrevideo').value:=nombrevideo;
Query1.Parameters.ParamByName('ruta').value:='c:video';
Query1.ExecSQL;


donde la funcion GetLocalT tiene como código:

Código:

function GetLocalT: String;
 var
    stSystemDate : TSystemTime;
 begin
    Windows.GetLocalTime( stSystemDate );
    Result := DateToStr( SystemTimeToDateTime( stSystemDate ) );
 end;

Bueno, si podeis ayudarme sería genial, y si no gracias igualmente:-)

kuan-yiu 12-06-2008 12:14:44

Yo nunca utilizo ".value" porque suele fallar, en tu caso lo haría así:
Código Delphi [-]
Query1.ParamByName('fecha').asDateTime:=fecha;
Query1.ParamByName('nombrevideo').asString:=nombrevideo;
Query1.ParamByName('ruta').asString:='c:video';
Query1.ExecSQL;

roman 12-06-2008 17:15:10

El problema, como ya mencionaron egostar y kuan-yiu, muy posiblemente se deba al tipo de datos. Cuando usas Query1.Parameters.ParamByName('fecha').value, value es un variant, esto es, una variable que no lleva un tipo de datos específico, de manera que el objeto Query1 no sabe en qué formato mandar el dato al motor de bases.

El problema con la solución que plantea kuan-yiu -me parece- es que no es válida en tu caso, porque tú estás usando Parameters y no Params. Parameters es una colección de TParameter en lugar de TParam, y el problema es que, a diferencia de este último, TParameter no cuenta con los métodos AsDate, AsString, AsInteger, etc.

Entonces, lo que debes hacer es indicar explícitamente el tipo de datos del parámetro:

Código Delphi [-]
Query1.Parameers.ParamByName('fecha').DataType := ftDate;
Query1.Parameters.ParamByName('fecha').value;

// Saludos

carmelina 15-06-2008 11:29:43

Hola a todos!!!

Muchas gracias por todos vuestros consejos. Al final el código que me va bien es:
Código:

Query1.SQL.Add('INSERT INTO misvideos VALUES (:fecha, :nombrevideo, :ruta)');
Query1.Parameters.ParamByName('fecha').value:=StrToDate(fech);
Query1.Parameters.ParamByName('nombrevideo').value:='nombrevideo';
Query1.Parameters.ParamByName('ruta').value:='c:\videos';
Query1.ExecSQL;

Editando en el Object Inspector el campo Parameters, con mis tres parametros(fecha, nombrevideo y ruta) y editando cada TParameter con su tipo correspondiente.

De nuevo muchas gracias por todo:-)

Un saludo


La franja horaria es GMT +2. Ahora son las 00:19:12.

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