Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 11-06-2008
carmelina carmelina is offline
Miembro
 
Registrado: mar 2008
Posts: 34
carmelina Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 11-06-2008
Avatar de egostar
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.306
egostar Va por buen camino
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
__________________

Nuestra naturaleza está en movimiento. El reposo absoluto es la muerte”
– Blaise Pascal.
Responder Con Cita
  #3  
Antiguo 11-06-2008
carmelina carmelina is offline
Miembro
 
Registrado: mar 2008
Posts: 34
carmelina Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 11-06-2008
Avatar de egostar
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.306
egostar Va por buen camino
Cita:
Empezado por carmelina Ver Mensaje
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
__________________

Nuestra naturaleza está en movimiento. El reposo absoluto es la muerte”
– Blaise Pascal.
Responder Con Cita
  #5  
Antiguo 12-06-2008
carmelina carmelina is offline
Miembro
 
Registrado: mar 2008
Posts: 34
carmelina Va por buen camino
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:-)
Responder Con Cita
  #6  
Antiguo 12-06-2008
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Registrado
 
Registrado: jun 2006
Ubicación: Oleiros. A Coruña.
Posts: 866
kuan-yiu Va por buen camino
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;
Responder Con Cita
  #7  
Antiguo 12-06-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 18.860
roman Va camino a la fama
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
__________________

Menos reyes y más elefantes
http://clubdelphi.com/correo_contacto_clubdelphi.png
Responder Con Cita
  #8  
Antiguo 15-06-2008
carmelina carmelina is offline
Miembro
 
Registrado: mar 2008
Posts: 34
carmelina Va por buen camino
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

Última edición por carmelina fecha: 15-06-2008 a las 10:35:44.
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Extraer caracteres de una cadena MiLLeNPuNk Varios 7 19-05-2010 21:37:25
Eliminar Cadena De Caracteres.... ZayDun Internet 3 27-03-2007 21:20:58
Buscador de cadena de caracteres pichi Vignola Varios 3 11-08-2006 16:51:03
eliminar caracteres de una cadena ibbeth Firebird e Interbase 4 23-12-2005 23:35:28
Cadena de mas de 50 caracteres luigidean Tablas planas 3 02-10-2004 03:09:39


La franja horaria es GMT +2. Ahora son las 01:38:03.


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