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 14-01-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Modificar Fecha SQL

Hola amigos... tengo que modificar un registro, estoy utilzando TIBSQL. El codigo lo tengo asi:

Código Delphi [-]
 
sedit2.text:=datetostr(now);
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('UPDATE compras');

IBSQL1.SQL.Add('SET fecha='+quotedstr(sedit2.text));
IBSQL1.SQL.Add('where empresa='+quotedstr(label1.caption));
IBSQL1.SQL.Add('and noc='+quotedstr(noc));
 
if not IBDatabase1.InternalTransaction.InTransaction then
IBDatabase1.InternalTransaction.StartTransaction;
IBSQL1.Prepare;
IBSQL1.ExecQuery;
try
IBDatabase1.InternalTransaction.Commit;
except
IBDatabase1.InternalTransaction.Rollback;

El problema es que en la tabla el campo Fecha esta definido como DATE, y al ejecutar el codigo me tira este error:

"Conversion error from string "13-01-2008".

Alguna idea de como resolverlo...

gracias
Responder Con Cita
  #2  
Antiguo 14-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Te recomiendo el uso de parámetros, de manera que tu base de datos y el motor que usas se encarguen de definir el formato en que trasladarán las fechas. (válido también para números y cadenas de texto).

Código Delphi [-]
  IBSQL1.Close;
  IBSQL1.SQL.Clear;
  IBSQL1.SQL.Add('UPDATE compras');
  IBSQL1.SQL.Add('SET fecha= :fecha');
  IBSQL1.SQL.Add('where empresa = :empresa');
  IBSQL1.SQL.Add('and noc=:noc');
  ibSQL1.ParamByName('fecha').AsDateTime := now;
  ibSQL1.ParamByName('empresa').AsString := label1.caption;
  ibSQL1.ParamByName('noc').AsString := noc;
  if not IBDatabase1.InternalTransaction.InTransaction then
    IBDatabase1.InternalTransaction.StartTransaction;
  try
    IBSQL1.Prepare;
    IBSQL1.ExecQuery;
    IBDatabase1.InternalTransaction.Commit;
  except
    IBDatabase1.InternalTransaction.Rollback;
    raise;
  end;

Como ves, he cambiado también el bloque try/except. La verdad, no le hallé sentido como estaba antes.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 14-01-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Gracias... funciono perfecto.
Ahora otro drama...
Necesito ingresar mas de un registro en cierta tabla... utilizo el siguiente codigo:

Código Delphi [-]
IBSQL2.close;
IBSQL2.SQL.Clear;
IBSQL2.SQL.add('INSERT into DETCOMPRAS');
IBSQL2.SQL.Add('(');

IBSQL2.SQL.Add(' empresa,');
IBSQL2.SQL.Add(' noc,');
IBSQL2.SQL.Add(' ncorr)');

IBSQL2.SQL.Add('VALUES (');
ibSQL2.SQL.Add(':empresa,');  
ibSQL2.SQL.Add(':noc,'); 
ibSQL2.SQL.Add(':ncorr)'); 

ibSQL2.ParamByName('empresa').asstring:=empresa;
ibSQL2.ParamByName('noc').asfloat:=result;
ibSQL2.ParamByName('ncorr').asstring:=inttostr(I);

Con el codigo anterior puedo ingresar un registro sin problema... el problema se presenta cuando quiero ingresar mas de un registro, los cuales estan integrados por los mismos campos anteriores.

Como hago eso... deberia generar tantas sentencias SQL como registros quisiera ingresar, y luego confirmar la transaccion?
Responder Con Cita
  #4  
Antiguo 16-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Algo así:

Código Delphi [-]
  ibSQL2.ParamByName('empresa').asstring:=empresa;
  ibSQL2.ParamByName('noc').asfloat:=result;
  for I := 1 to 100 do
  begin
    ibSQL2.ParamByName('ncorr').asstring:=inttostr(I);
    ibSQL2.ExecSQL();
  end;
  ibTransaction1.Commit();

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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
Desde la fecha inicio hasta la fecha final que me grabe los meses contenidos Renis SQL 4 01-10-2007 17:21:44
Ayuda, Como calcular fecha de vencimiento mensual a partir de una fecha x en delphi Renis Impresión 4 23-08-2007 23:45:14
DIFERENCIA de Dias entre una fecha y la fecha del sistema drakkon MySQL 1 11-06-2007 10:34:06
Comparar una fecha de n campo date contra fecha actual amadis SQL 2 27-06-2005 21:37:41
Modificar formato fecha JODELSA Windows 4 24-05-2004 21:25:07


La franja horaria es GMT +2. Ahora son las 21:58:59.


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