Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2007
Avatar de Nomad
Nomad Nomad is offline
Miembro
 
Registrado: abr 2007
Ubicación: Sarchi,Costa Rica
Posts: 107
Poder: 18
Nomad Va por buen camino
Smile Problema insertar fecha

Hola

Estoy insertando la fecha actual de la siguiente forma:
Código Delphi [-]
sql := 'Insert into FinalProduct(Id,PlantId,OrderId,PackDate,BagsURC,IdCus,IdVar) Values('
+FloatToStr(Inicio)+','+CmbPlanta.Items[CmbPlanta.itemindex]+
','+#39+'K017-3'+#39+','+formatdatetime('dd/mm/yyyy',date)+','
+NBolsas.Text+',107,169'+')';


Pero resulta que cuando voy a SQL server a revisar el dato que inserte, me aparece 01/01/1900, el tipo de datos en la base de datos es DATETIME.

Cuando corro el programa paso a paso, antes de enviar a insertar, reviso la cadena y la fecha va correctamente ej: 13/06/2007, pero sigue insertando 01/01/1900

Gracias y disculpen si redundo, pero he buscado y no encuentro nada como esto en el foro.

Gracias
__________________
Quisiera cambiar el mundo, pero no me dan el código fuente.

Última edición por vtdeleon fecha: 14-06-2007 a las 00:43:07.
Responder Con Cita
  #2  
Antiguo 13-06-2007
loxod loxod is offline
Miembro
 
Registrado: feb 2007
Ubicación: Mexico
Posts: 45
Poder: 0
loxod Va por buen camino
creo que te falta poner el campo fecha entre el caracter #39

sql := 'Insert into FinalProduct(Id,PlantId,OrderId,PackDate,BagsURC,IdCus,IdVar) Values('
+FloatToStr(Inicio)+','+CmbPlanta.Items[CmbPlanta.itemindex]+
','+#39+'K017-3'+#39+','+ #39 + formatdatetime('dd/mm/yyyy',date) + #39 +',' +NBolsas.Text+',107,169'+')';
Responder Con Cita
  #3  
Antiguo 13-06-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
si es ms sql server, no hay nada como la fecha en formato iso
YYYYMMDD para que insertes o manejes fechas, independientemente del lenguaje, notese que no lleva - o / es todo pegado
Responder Con Cita
  #4  
Antiguo 14-06-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
with TuDataSet do begin
SQL.Add('Insert into FinalProduct(Id, PlantId, OrderId, PackDate, BagsURC, IdCus, IdVar) ');
SQL.Add('Values('+FloatToStr(Inicio)+', '''+CmbPlanta.Items[CmbPlanta.itemindex]+''', ''K017-3'', ');
SQL.Add(''''+ formatdatetime('yyyy-mm-dd',date)+''', '''+NBolsas.Text+''',107,169) ');
...
end;

Código Delphi [-]
With TUDataset do begin
...
SQL.Add('Insert into FinalProduct(ID, PlantID, OrderID, PackDate, BagsURC, IdCus, IDVar)');
SQL.Add('Values( :vID, :vPlantID, :vOrderID, :vPackID, :vBagusURC, :vIDCus, :vIDVar)');
ParamByname('vID').AsFloat := Inicio;
ParamByName('vPlantID').AsString := cmbPlanta.Items[cmbPlanta.ItemIndex];
ParamByName('vOrderID').AsString := 'K017-3';
ParamByName('vPackID').AsDateTime := date;
ParamByName('vBagusURC').AsString := NBolsas.Text;
ParamByName('vIDCus').AsInteger := 107;
ParamByName('vIDVar').AsInteger := 169;
..
ExecSQL;
...
end; // with
__________________


Última edición por ContraVeneno fecha: 14-06-2007 a las 15:44:58.
Responder Con Cita
  #5  
Antiguo 14-06-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Para problemas de tipo fecha, lo mejor es usar "Paramentros" en el DataSet. De esa forma le dejas el trabajo sucio a otro.

Código Delphi [-]
sql := 'Insert into FinalProduct(Id,PlantId,OrderId,PackDate,BagsURC,IdCus,IdVar) Values(:Inicio, :Planta, :Orden, :Fecha, :Bolsas, 107,169)';
With Query1 do
begin
  Sql.Text:=sql;
  ParamByName('Inicio').AsFloat:=Inicio;
  ParamByName('Planta').AsString:=CmbPlanta.Items[CmbPlanta.itemindex];
  ParamByName('Orden').AsString:='K017-3';
  ParamByName('Fecha').AsDateTime:=Date;
  ParamByName('Bolsas').AsString:=NBolsas.Text;
  ExecSql;
end;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #6  
Antiguo 14-06-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Llegue 7 minutos tarde
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 14-06-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Si hombre, que cosas, últimamente me les he estado adelantando, jejeje
en fin, me queda una duda... ¿es necesario agregar los apóstrofes (') con el #39?

Código Delphi [-]
ParamByName('Orden').AsString:=#39+'K017-3'+#39;

Según entiendo, al utilizar parámetros, este se encargar de agregárlos. Por lo que la instrucción sería:
Código Delphi [-]
ParamByName('Orden').AsString:='K017-3';
Al menos así funciona en mi delphi 5 ó 10 .

---edito--
ya editaste, jeje
__________________


Última edición por ContraVeneno fecha: 14-06-2007 a las 00:57:45.
Responder Con Cita
  #8  
Antiguo 14-06-2007
Avatar de Nomad
Nomad Nomad is offline
Miembro
 
Registrado: abr 2007
Ubicación: Sarchi,Costa Rica
Posts: 107
Poder: 18
Nomad Va por buen camino
Perfecto

Gracias a todos... luego les cuento como me fue...
__________________
Quisiera cambiar el mundo, pero no me dan el código fuente.
Responder Con Cita
  #9  
Antiguo 14-06-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Cita:
Empezado por ContraVeneno
en fin, me queda una duda... ¿es necesario agregar los apóstrofes (') con el #39?
Duda, el codigo Ascci #39 para que lo ponen, si es lo mismo utilizar '

Podrian explicarme este codigo, no lo entiendo?
Responder Con Cita
  #10  
Antiguo 14-06-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Lo ponen para que en el texto se coloque un apóstrofe y obtener el mismo resultado que se obtiene al usar la función "QuotedStr". En el caso de utilizar parámetros esto no es necesario.

Si no se utilizan parámetros, para obtener una cadena con apóstrofes (como regularmente se utilizan en una consulta en SQL Server), tienes tres opciones:
  • 'campo = '+#39+valor+#39 +','; Resultando en: campo = 'valor',
  • 'campo = '''+valor+''', '; Resultando en: campo = 'valor',
  • 'campo = '+QuotedStr(Valor)+','; Resultando en: campo = 'valor',
Donde la menos recomendable es la primera y la más recomendable es la tercera.
__________________


Última edición por ContraVeneno fecha: 14-06-2007 a las 15:43:29.
Responder Con Cita
  #11  
Antiguo 14-06-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Gracias Contraveneno por la aclaracion, lo tendre muy en cuenta en la elaboracion de codigo en un futuro
Responder Con Cita
  #12  
Antiguo 14-06-2007
Avatar de Nomad
Nomad Nomad is offline
Miembro
 
Registrado: abr 2007
Ubicación: Sarchi,Costa Rica
Posts: 107
Poder: 18
Nomad Va por buen camino
Thumbs up Uso de parametros

Les cuento que con el uso de parametros se soluciono el problema, gracias
__________________
Quisiera cambiar el mundo, pero no me dan el código fuente.
Responder Con Cita
  #13  
Antiguo 18-12-2007
jjmagro jjmagro is offline
Registrado
 
Registrado: dic 2007
Posts: 1
Poder: 0
jjmagro Va por buen camino
Unhappy Y si fuera al revés?

Estoy buscando un problema similar: en este tópico ustedes hacen referencia a que capturan una fecha en delphi y en SQL se guarda otra diferente y que lo solucionan mandándole parámetros, ok, perfecto.
Yo tengo un problema inverso: tengo fechas en SQL y necesito verlas en Delphi (las fechas las almacena otra aplicación) y yo cuando me traigo la información de la tabla me trae las fechas distorsionadas (o sea, con otro formato vamos)
Por ejemplo, tengo almacenado el valor 17/12/2007 y en Delphi, cuando me trae ese valor me muestra 28/05/4430 :S
Simplemente conecto a un TTable y muestro la fecha en un formulario en un campo DBEdit
El campo de la fecha en el TTable está como DateTime, en SQL Server 2000 también está como DateTime, y ahora lo que se me dio fue por configurar el BDE Engine para configurar el formato de los alias y todo eso... pero nada ha cambiado
Alguien podría darme algo de luz al respecto por favor?
Muchas gracias gente desde ya por cualquier comentario que puedan hacer para ayudarme...
Responder Con Cita
  #14  
Antiguo 20-12-2007
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
Asegúrate de que no tengas algún formato extraño de fecha en la definición de la tabla, del grid... asígnale el que necesites (por ejemplo: dd/mm/yyyy)
Responder Con Cita
  #15  
Antiguo 17-01-2008
gerasA gerasA is offline
Miembro
 
Registrado: ene 2008
Posts: 16
Poder: 0
gerasA Va por buen camino
Hola!
tengo una duda sobre una consulta.
tengo 7 tablas todas con los mismos campos(No.,Fecha,Folio,Peso,Total)
necesito hacer consultas por fecha pero de cada tabla.
Mi pregunta es como cambio el formato de la fecha para poder hacer las consultas, el formato de mis tablas es dd/mm/aaaa lo que hago es esto:
Código Delphi [-]
consulta:='select * from Aluminio where Fecha =';
consulta:=consulta+quotedstr(edit1.Text);
consulta:=consulta+'order by Folio';
Query1.SQL.Clear;
Query1.SQL.Add(consulta);
Query1.Active;
Query1.Open;
Si lo hace pero el usuario tiene que poner diferente formato mm/dd/aaaa, yo kiero ke lo capture dd/mm/aaaa
Gracias
Responder Con Cita
  #16  
Antiguo 17-01-2008
Avatar de Nomad
Nomad Nomad is offline
Miembro
 
Registrado: abr 2007
Ubicación: Sarchi,Costa Rica
Posts: 107
Poder: 18
Nomad Va por buen camino
Thumbs up

Lo puedes hacer asi...
Código Delphi [-]
consulta:='select * from Aluminio where Fecha = :Fecha order by Folio';
Query1.sql.text := consulta;
Query1.Parameters.ParamByName('fecha').vale := edit1.text
Query1.Active := true;

Solo hay un detalle, depende de la version de delphi que tengas

puede ser que la siguiente linea cambie.

Código Delphi [-]
Query1.ParamByName('fecha').vale := edit1.text

No se le pone el "Parameters"

Espero que le ayude...

__________________
Quisiera cambiar el mundo, pero no me dan el código fuente.
Responder Con Cita
  #17  
Antiguo 17-01-2008
gerasA gerasA is offline
Miembro
 
Registrado: ene 2008
Posts: 16
Poder: 0
gerasA Va por buen camino
Consultas por fecha

Estoy usando delphi 7 y ya hice lo que me dices Nomad pero me marka error:Type mismatch in expresion
a la hora de que el usuario captura la fecha y cambie la linea ke me dijiste
Gracias

Última edición por gerasA fecha: 17-01-2008 a las 20:45:14.
Responder Con Cita
  #18  
Antiguo 17-01-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
¿porque diantres pedir una fecha en un TEdit cuando la puedes pedir con un TDateTimePicker?
__________________

Responder Con Cita
Respuesta



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
Error al insertar fecha en tabla DBF cocomo SQL 2 05-02-2007 17:24:46
Como insertar en un campo mediante un trigger la fecha actual del servidor kovaski Firebird e Interbase 2 04-10-2006 16:39:33
problema al insertar en bd access manoley23 SQL 12 20-07-2006 14:16:31
Asigna Fecha y Hora Automatico al Insertar Maury Manosalva OOP 3 31-10-2005 20:36:29
como insertar fecha y hora?? ebeltete SQL 2 02-08-2003 22:28:08


La franja horaria es GMT +2. Ahora son las 08:56:58.


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