Club Delphi  
    FTP   CCD     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 Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2008
carmelina carmelina is offline
Miembro
 
Registrado: mar 2008
Posts: 34
Poder: 0
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
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
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
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 11-06-2008
carmelina carmelina is offline
Miembro
 
Registrado: mar 2008
Posts: 34
Poder: 0
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
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
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
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 12-06-2008
carmelina carmelina is offline
Miembro
 
Registrado: mar 2008
Posts: 34
Poder: 0
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
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
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: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #8  
Antiguo 15-06-2008
carmelina carmelina is offline
Miembro
 
Registrado: mar 2008
Posts: 34
Poder: 0
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 11:35:44.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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 22:37:25
Eliminar Cadena De Caracteres.... ZayDun Internet 3 27-03-2007 22:20:58
Buscador de cadena de caracteres pichi Vignola Varios 3 11-08-2006 17:51:03
eliminar caracteres de una cadena ibbeth Firebird e Interbase 4 24-12-2005 00:35:28
Cadena de mas de 50 caracteres luigidean Tablas planas 3 02-10-2004 04:09:39


La franja horaria es GMT +2. Ahora son las 20:08:07.


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
Copyright 1996-2007 Club Delphi