Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2005
atirado atirado is offline
Miembro
 
Registrado: mar 2004
Posts: 41
Poder: 0
atirado Va por buen camino
Question ADO con Locate sólo busca 1 campo y necesito 2 :(

Hola a tod@s!
Les escribo porque he buscado información al respecto, pero nada parece funcionar, y ya que aquí es como la escuela Jedi de lo relacionado con Delphi, creo que podrán ayudar a este pobre padawan en desgracia
La cuestión es esta:
Estoy usando componentes ADO para guardar información en una tabla de Access XP donde se guardan tarifas de envíos, en dicha tabla se guarda un identificador de la ciudad destino, el costo de acuerdo a la clase del envío y una fecha que indica cuándo entra en vigor la tarifa.
Por lo anterior, antes de grabar un nuevo registro necesito verificar que no haya otro registro que tenga esa fecha con ese identificador de ciudad.
Es decir, si ya tengo lo siguiente:

Código:
IdCiudad | Costo | Fecha
	1	   |   100  | 05/07/2005
con esto ya no debería permitirme grabar otra vez el IdCiudad = 1 con Fecha = '05/07/2005', ¿cierto?
Ok, intento hacer la validación de la siguiente manera:
Código Delphi [-]
If not tblTarifasPorCiudad.Locate('idciudad;fecha', VarArrayOf([vIdCiudad, dtpFecha.DateTime]), [loCaseInsensitive]) then
     Grabar
Else
     ShowMessage('El registro ya existe');
donde tblTarifasPorCiudad es la tabla de tarifas de Access XP. La fecha la obtiene de un DateTimePicker llamado dtpFecha.
Al parecer, el método Locate sólo funciona si utilizo un campo para hacer la búsqueda, sólo que en este caso, necesito que lo haga por 2 campos diferentes, pues sí puede haber repetidos en IdCiudad, ya que con el tiempo se crea otro registro con una fecha y un costo diferente, pero nunca se eliminan los anteriores, de la siguiente manera:
Código:
IdCiudad | Costo | Fecha
	1	   |   100  | 05/07/2005
    1       |   110  | 01/08/2005
Alguien tiene alguna luz en este camino de oscuridad??? Que la fuerza les acompañe, jejeje
Responder Con Cita
  #2  
Antiguo 07-07-2005
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
Saludos
Cita:
Al parecer, el método Locate sólo funciona si utilizo un campo para hacer la búsqueda, sólo que en este caso, necesito que lo haga por 2 campos diferentes,
Quien dijo que no podia buscar por dos campos???
No estoy seguro, ni lo he probado ppero creo qeu debes comverti dtpFecha.DateTime en String.
__________________
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
  #3  
Antiguo 07-07-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo también apuesto a que el problema va por la fecha; En la tabla tienes sólo una fecha (y no se si Access almacenará alguna hora de tipo 00:00:00); Asegurate de que al hacer la búsqueda no estás parando un campo "Fecha+Hora", porque si fuera así la comparación no sería correcta (ya que te estará comparando también la hora).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 07-07-2005
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
ADO con Locate

Hola

Siguiendo con lo que se referian anteriormente del problema con la fecha del DateTimePicker trata de obtener solo la parte entera del mismo con algo asi:
Int(dtpfecha.Date)

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer
Responder Con Cita
  #5  
Antiguo 07-07-2005
atirado atirado is offline
Miembro
 
Registrado: mar 2004
Posts: 41
Poder: 0
atirado Va por buen camino
Talking Lo intento y les aviso!

Gracias por el tip!!! veré ahora mismo si funciona y les dejo saber
Responder Con Cita
  #6  
Antiguo 07-07-2005
atirado atirado is offline
Miembro
 
Registrado: mar 2004
Posts: 41
Poder: 0
atirado Va por buen camino
Thumbs up ADO y Locate

Hola a tod@s nuevamente!
En efecto, lo que estaba pasando era que en la tabla las fechas estaban guardadas como fechas cortas y la comparación la hacía con fecha/hora, por eso el locate no parecía funcionar.
Gracias por su atención y su consejo! Yoda los envidiaría, definitivamente, jejejeje
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


La franja horaria es GMT +2. Ahora son las 00:13:37.


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