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 27-10-2008
FerCastro FerCastro is offline
Miembro
 
Registrado: abr 2006
Posts: 97
Poder: 19
FerCastro Va por buen camino
Gracias por las respuestas:

- Egostar, ya hice lo que me comentas y sigue duplicando.
- Marcos, ya creé de nuevo la tabla, pasé los registros y sigue dulpicando.
- Román, si es un campo llave.

Gracias!! y saludos a todos

FCG
Responder Con Cita
  #2  
Antiguo 27-10-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
¿¡¡¡Es un campo llave y aún así se duplica el registro!!!? ¿Pues qué gestor usas?

// Saludos
Responder Con Cita
  #3  
Antiguo 27-10-2008
FerCastro FerCastro is offline
Miembro
 
Registrado: abr 2006
Posts: 97
Poder: 19
FerCastro Va por buen camino
Román, el registro se duplica excepto en el campo llave. Pero en efecto, el campo llave es autoincrementable y toma el siguiente ID manteniendo todos los demás valores en un nuevo registro
Responder Con Cita
  #4  
Antiguo 27-10-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Wink

Cita:
Empezado por FerCastro Ver Mensaje
Gracias por las respuestas:

- Egostar, ya hice lo que me comentas y sigue duplicando.
- Marcos, ya creé de nuevo la tabla, pasé los registros y sigue dulpicando.
- Román, si es un campo llave.

Gracias!! y saludos a todos

FCG

mmm... extraño sintoma.... pero si IdEmpleado es un campo llave, no debiera duplicarte el registro o al menos deberia darte un error de duplicado...

Por que no haces un Refresh despues del post ??? a ver k tal..., o lo otro seia cambiar de forma de actualizar el registro...

Código Delphi [-]
With Datos Do
Begin
     AQ_Actualiza.Close;
     AQ_Actualiza.SQL.Clear;
     AQ_Actualiza.SQL.Add('Update Empleado Set Emp_Empresa=:v01, Emp_Paterno=:v02, Emp_Materno=:v03, Emp_Nombre=:v04');
     AQ_Actualiza.SQL.Add('Where Id_Empleado =:Var05');
     AQ_Actualiza.Parameters[0].Value :=FMain.oVariables.nEmpresa;
     AQ_Actualiza.Parameters[1].Value := cPaterno.Text;
     AQ_Actualiza.Parameters[2].Value := cMaterno.Text;
     AQ_Actualiza.Parameters[3].Value := cNombre.Text;
     AQ_Actualiza.Parameters[4].Value :=Data.qEmpleado.FieldByName('IDEmpleado').AsInteger;
    AQ_Actualiza.ExecSQL;
End;

bueno, no se con que componentes haces tu sentencia... el ejemplo anterior es usando SQL Server y ADO....

Salu2
__________________
BlueSteel
Responder Con Cita
  #5  
Antiguo 28-10-2008
FerCastro FerCastro is offline
Miembro
 
Registrado: abr 2006
Posts: 97
Poder: 19
FerCastro Va por buen camino
Gracias, siguiendo los consejos de Poli y del Ego esto ya quedo arreglado:


Código Delphi [-]
      cCadena := ' UPDATE empleado SET '+
                          ' IDEmpresa = '+ QuotedStr(IntToStr(FMain.oVariables.nEmpresa))+
                          ' , IDSucursal = '+ QuotedStr(IntToStr(FMain.oVariables.nSucursal))+
                          ' , IDDepartamento = '+ QuotedStr(IntToStr(nIDDepartamento))+
                          ' , IDPuesto = '+ QuotedStr(IntToStr(nIDPuesto))+
                          ' , IDRegistro = '+ QuotedStr(cRegistro.Text)+
                          ' , IDNomina = '+ QuotedStr(cNomina.Text)+
                          ' , Apaterno = '+ QuotedStr(cPaterno.Text)+
                          ' , AMaterno = '+ QuotedStr(cMaterno.Text)+
                          ' , Nombre = '+ QuotedStr(cNombre.Text)+
                          ' , NombreCompleto = '+ QuotedStr(TRIM(cPaterno.Text) + ' ' + TRIM(cMaterno.Text)+ ' ' + TRIM(cNombre.Text))+
                          ' , CentroCostos = '+ QuotedStr(cCostos.Text)+
                          ' , Sucursales = '+ QuotedStr(FDatosEmpleado.cSucursalesEvento)+
                          ' , FNacimiento = '+ QuotedStr(DatetoStr(dCumple.Date))+
                          ' , FIngreso = '+ QuotedStr(DatetoStr(dCumple.Date))+
                          ' , Telefono = '+ QuotedStr(cTelefono.Text)+
                          ' , Correoe = '+ QuotedStr(cCorreo.Text)+
                          ' , Dir1 = '+ QuotedStr(cDir1.Text)+
                          ' , Dir2 = '+ QuotedStr(cDir2.Text)+
                          ' , Dir3 = '+ QuotedStr(cDir3.Text)+
                          ' , CURP = '+ QuotedStr(cCURP.Text)+
                          ' , Ciudad = '+ QuotedStr(cCiudad.Text)+
                          ' , Estado = '+ QuotedStr(cEstado.Text)+
                          ' , CP = '+ QuotedStr(cCP.Text)+
                          ' , Activo = '+ QuotedStr(IntToStr(1))+
                          ' , Usuario = '+ QuotedStr('FCastro')+
                          ' , U_Fecha = '+ QuotedStr(DateToStr(now))+

                          ' WHERE IDEmpleado = '+ QuotedStr(IntToStr(Data.qEmpleado.FieldByName('IDEmpleado').AsInteger));

      With Data.qEditaEmpleado do
        Begin
          SQL.Text := cCadena;
          ExecSQL;
        end;

Ahora, porque lo metí a una cadena de texto? la verdad es que si no lo dejaba así el query no se ejecutaba, enigmas de la vida no?

Mil gracias a todos en el foro por la ayuda. "Agradezco a san poli por los favores y las ayudas recibidas"

Saludos!
Responder Con Cita
  #6  
Antiguo 28-10-2008
FerCastro FerCastro is offline
Miembro
 
Registrado: abr 2006
Posts: 97
Poder: 19
FerCastro Va por buen camino
Siguiendo con el mismo hilo, pero con diferente tema, estoy modificando los comandos que tenía por sentencias Update, pero tengo el siguiente problema:

Cuando quería registrar los cambios en un cambio datetime, tomando en cuenta solo la hora hacía esto:

Código Delphi [-]
FieldValues['HoraInicio1']:=TimeToStr(dsInicio1.Time);
FieldValues['HoraInicio2']:=TimeToStr(dsInicio2.Time);
FieldValues['HoraInicio3']:=TimeToStr(dsInicio3.Time);


Pero la momento de querer hacer lo mismo para generar la sentencia SQL, que queda así:

Código Delphi [-]
' , HoraInicio1 = '+ QuotedStr(TimeToStr(dsInicio1.Time))+
' , HoraInicio2 = '+ QuotedStr(TimeToStr(dsInicio2.Time))+
' , HoraInicio3 = '+ QuotedStr(TimeToStr(dsInicio3.Time))+

EL resultado en SQL queda asi:

Código SQL [-]
HoraInicio1 = '09:00:00 a.m.' , 
HoraInicio2 = '04:00:00 p.m.' , 
HoraInicio3 = '12:00:00 a.m.'

Pero me manda el siguiente error :

Error de conversión al convertir una cadena de caracteres a datetime.

Quiero hacer la sentencia con un convert, por consejo de Poliburro, pero pues no doy pie con bola.

Alguien sabe que se tiene que hacer? por que no me está aceptando los datos en la sentencia SQl?

Muchas gracias por la ayuda

FCG
Responder Con Cita
  #7  
Antiguo 28-10-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
Lo recomendado siempre en estos casos es usar parámetros y suplir su valor con los métodos adecuados al tipo:

Código Delphi [-]
Query1.ParamByName('HoraInicio1').AsDateTime := dsInicio1.Time

De esta forma le dejas el trabajo y pormenores de la conversión al componente en sí.

// Saludos
Responder Con Cita
  #8  
Antiguo 28-10-2008
FerCastro FerCastro is offline
Miembro
 
Registrado: abr 2006
Posts: 97
Poder: 19
FerCastro Va por buen camino
Hola Román,

La verdad es que nunca he usado parámetros, dónde puedo hallar un ejemplo pequeño de cómo hacerlo?

Gracias

Fernando
Responder Con Cita
  #9  
Antiguo 28-10-2008
FerCastro FerCastro is offline
Miembro
 
Registrado: abr 2006
Posts: 97
Poder: 19
FerCastro Va por buen camino
Hallé esto en el foro:

Código Delphi [-]
cadena := 'Update Documentos set doc_apel1=:apel1 ,doc_apel2=:apel2';
cadena := cadena + ', doc_nombre=:nombre';
cadena := cadena + ', usuario=:usu, fechagrab=:Fecha';
cadena := cadena + ' where doc_id=:id and doc_NH=:NH';
ADOQVarios.Active:=false;
ADOQVarios.SQL.Clear;
ADOQVarios.SQL.Add(cadena);
ADOQVarios.Parameters.ParamByName('id').DataType := ftInteger;
ADOQVarios.Parameters.ParamByName('id').Value :=cod;
ADOQVarios.Parameters.ParamByName('apel2').DataType := ftString;
ADOQVarios.Parameters.ParamByName('apel2').Value := eApe2.text;
ADOQVarios.Parameters.ParamByName('apel1').DataType := ftString;
ADOQVarios.Parameters.ParamByName('apel1').Value := eApe1.text;
ADOQVarios.Parameters.ParamByName('Nombre').DataType := ftString;
ADOQVarios.Parameters.ParamByName('Nombre').Value := eNombre.text;
ADOQVarios.Parameters.ParamByName('NH').DataType := ftInteger;
ADOQVarios.Parameters.ParamByName('NH').Value :=StrToInt(eNH.text);
ADOQVarios.Parameters.ParamByName('Fecha').DataType := ftDateTime;
ADOQVarios.Parameters.ParamByName('Fecha').Value := Now;
ADOQVarios.Parameters.ParamByName('Usu').DataType := ftString;
ADOQVarios.Parameters.ParamByName('Usu').Value :=MFunciones.GetLoginName;
ADOQVarios.ExecSQL;

Solo una pregunta, los parámetros se tiene que declarar todos y cada uno como variables?

Perdon por la pregunta, solo es una duda.

Saludos
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
Duplica registro en ClientDataSet maestro-detalle Josepo Conexión con bases de datos 8 07-05-2013 10:59:09
Duplica informacion en archivo txt muppett Varios 5 22-02-2008 13:08:28
Update!!!, pero solo para un registro ELINK Firebird e Interbase 6 08-01-2008 20:26:41
INSERT INTO duplica registros. Duc SQL 3 02-08-2004 16:46:09
Update registro - fallo con variable Gorehide SQL 4 13-07-2004 19:12:32


La franja horaria es GMT +2. Ahora son las 11:12:10.


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