Visual Basic - problema adodc1

Life is soft - evento anual de software empresarial
 
Vista:

problema adodc1

Publicado por nelson (5 intervenciones) el 24/03/2005 22:09:24
Que tal gusto en saludarles .... Sera que alguien me puede ayudar? he escrito este mensaje 3 veces y nadien me responde....

Necesito encontrar el numero mayor de un conjunto de registros pero que coincida con una fecha determinada ejemplo el mayor numero del dia 21/03/2005 ya que pueden haber muchos resgistros con la misma fecha pero con diferente numero (aparte del identificador principal de cada registro) mi programa es sobre viajes entonces puedo realizar muchos viajes en un mismo dia y necesito llevar un correlativo de viajes diarios entonces tengo que leer el mayor numero del dia y sumarle uno (1) para seguir con el siguiente viaje, pero como la base de datos puede estar desordenada debo estar seguro que ese numero es el mayor de ese dia.. como hago eso con un adodc1.

gracias por sus respuestas...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema adodc1

Publicado por Fernando Rios (47 intervenciones) el 25/03/2005 06:45:04

Con el control ADODC dificilmente puedes hacer consultas complejas. Aun si estas guardando tu información en ACCESS, te recomiendo que uses el conjunto de objetos ADO (agrega una referencia a Microsoft ActiveX Data Objects), de tal forma que puedas utilizar SQL para explotar tu información de una manera tan flexible como quieras. Después de agregar la referencia que te digo, haz esto:

1. Declara e instancia un objeto tipo ADODB.Recordset
2. Cuelga ese Rs a tu conexión (algo asi: Set Rs.ActiveConnection = TU_OBJETO_DE_CONEXION)
3. Hasta este punto, ya estas listo para ejecutar un SQL sobre tu BD.

Ahora, abre el Rs asi (según lo que pides, yo estructuraría mi enunciado SQL mas o menos así):

Rs.Open "SELECT MAX(idcampo) as NUMMAX FROM TABLA_VIAJES WHERE fecha = '#21/03/2005#')"

Tras lo cual, puedes acceder al resultado así:
l_NumMax = Rs("NUMMAX")
ó
l_NumMax = Rs(0)

donde l_NumMax es una variable entera dentro de tu codigo VB y NUMMAX es el alias que le diste al campo. El cero (0) representa al primer campo dentro de la colección de campos regresados por el query SQL.

Ahora, si quieres el número máximo de cada dia dentro de un rango, utiliza esto:
Rs.Open "SELECT MAX(idcampo) as NUMMAX FROM TABLA_VIAJES WHERE fecha BETWEEN '#21/03/2005#') AND '#28/03/2005#'"

y obtienes los valores así:

rs.movefirst
do while not rs.EOF
print rs(0)
rs.movenext
loop

TIP: ACCESS tiene broncas para manejar las fechas, así uses el caracter # o la comilla simple ' para delimitar, así que puedes encontrarte con estos problemas. Una solución es utilizando el metodo Filter del Rs (Rs.Filter) que funciona como un WHERE dentro del SQL. Ejemplo:
PARA OBTENER LOS MAXIMOS DE UN RANGO DE DIAS:

Rs.Open "SELECT MAX(idcampo) as NUMMAX FROM TABLA_VIAJES"

Rs.Filter = "fecha BETWEEN '21/03/2005') AND '28/03/2005'"

para eliminar el Filtro usa Rs.Filter = 0 y asi obtienes nuevamente todos los registros.

Para mas información en el uso de Filter, chécate la ayuda MSDN.

Sas, espero te sirva mi rollo..

Salu2..
At' Fer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar