BUsqueda de Registros Identicos Usando VB6

Cerrado
haznaranv - 18 sep 2009 a las 12:33
 Elinv - 19 sep 2009 a las 18:30
Hola a todos:
Tengo un pequeño problema que ya me llevo rompiendo la cabeza hace 2 semanas y espero que me ayuden, estoy trabajando con VB6 y acces 2003 como base de datos y ADO, en mi base de datos tengo una relacion de fechas con distintos clientes, en cada fecha hay una cantidad de clientes y asi sucesivamente, lo que estoy haciendo es sacar en un listbox la relacion de los clientes que se repiten en un determinado periodo estoy usando el siguiente codigo en sql:

Private Sub CargaCliente()
Dim Rst As ADODB.Recordset
Set Rs = New ADODB.Recordset
ModBD.ConectarBD
Rst.CursorLocation = adUseClient

Rst.Source = "SELECT N_cliente, COUNT(*) FROM Averia GROUP BY N_Cliente HAVING COUNT (N_Cliente)>1"
Rst.Open , ModBD.conex, adOpenForwardOnly, adLockReadOnly

Rst.MoveFirst
For i = 1 To Rst.RecordCount
lstCli.AddItem Rst.Fields("N_cliente").Value
Rst.MoveNext

Next i

ModBD.DesconectarBD

Set Rst = Nothing
End Sub

mi problema es el siguiente que lo quiero filtrar poor fechas pero cuando coloco el campo Fecha en SELECT y coloco la sentencia WHERE FECHA<= Fmin and FECHA >= Fmax, me sale un error de que mis funciones agregadas no estan definidas.
si Alguien m epuede ayudar por favor con este problema que ya llevo 2 semanas y aun no puedo solucionarlo.
de antemano Os agradezco mucho.

4 respuestas

haznaranv Mensajes enviados 3 Fecha de inscripción viernes, 18 de septiembre de 2009 Estatus Miembro Última intervención sábado, 19 de septiembre de 2009
18 sep 2009 a las 20:30
hola Elinv gracias por responder, la verdad ya estaba poniendome nervioso por que pense que nadie me contestaria.
te comento un poco, te cuento que en la mascara de acces esta bien definido en la parte de mascara lo he definido como fecha corta, espero que a eso te refieras, y en cuanto al programa, me refierro que x ejemplo, yo tengo una tabla que se llama Averia y dentro de la tabla tengo los campos Fecha, N_cliente, Cod_averia, Tipo_Orden, Ticket, Observacion.
bueno, en mi programa tengo 2 DiTPicker uno es Fmin y el otro es Fmax ( corresponde al rango de fechas que le colocare para filtrar), cuando yo realizo el filtrado solo quiero que me muestre los datos de N_cliente que se repitan en ese rango de fechas, pero cuando realizo el conteo mejro dicho cuando hago esto:

Rst.Source = "SELECT N_cliente, COUNT(*) FROM Averia GROUP BY N_Cliente HAVING COUNT (N_Cliente)>1"

me muestra correctamente los datos que se repiten, pero los datos que se repiten son del total de lo almacenado, y alli es donde entra el filtrado de fecha cuando coloco mi rango de fecha yo quiero que me muestre en ese rango los datos que se repiten en N_cliente, pero cuando pongo la sentencia:

Rst.Source = "SELECT Fecha, COUNT(N_cliente) FROM Averia WHERE FEcha <= Fmin and FEcha>= Fmx GROUP BY N_Cliente HAVING COUNT (N_Cliente)>1"

me sale que no esta definidas algunas funciones agregadas y me señala el campo Fecha o como que le falta algun operador para que este correcto.

No se si me deje explicar bien , espero realmente que me ayuden por que esto ya me tiene cabezon jajaja bueno

de ante mano agradezco su colaboracion y ayuda, antes que me olvode tambien hize lo que propusistes, pero no

me muestra todo el contenido de N_cliente y yo solo deseo los elementos que se repitan en ese campo.

gracias por la ayuda
0
haznaranv Mensajes enviados 3 Fecha de inscripción viernes, 18 de septiembre de 2009 Estatus Miembro Última intervención sábado, 19 de septiembre de 2009
19 sep 2009 a las 01:27
hola Elinv, Gracias por tus rapidas respuestas y por tu apoyo.
te comento un poco hice lo que me comentastes quedo asi mas o menos:

Private Sub CargaCliente(Fmin As String, Fmx As String)

Dim Rst As ADODB.Recordset

Set Rst = New ADODB.Recordset
ModBD.ConectarBD

Rst.CursorLocation = adUseClient
Rst.Source = "SELECT Fecha, COUNT(N_cliente) FROM Averia WHERE Fecha <= " & Fmin & " and Fecha>= " & Fmx & " GROUP BY N_Cliente HAVING COUNT (N_Cliente)>1"

Rst.Open , ModBD.conex, adOpenForwardOnly, adLockReadOnly

Rst.MoveFirst

Dim i As Integer
For i = 1 To Rst.RecordCount
lstCli.AddItem Rst.Fields("N_cliente").Value
Rst.MoveNext

Next i
ModBD.DesconectarBD
Set Rst = Nothing
End Sub

Private Sub btnBuscar_Click()
CargaCliente 1, 5 '// numeros de Prueba para comprobar filtrado
End Sub




modifique la base de datos con elementos numeros no de fechas , y bueno me sale el siguiente error:

Run-time error '-2147217887(80040e21)':

Ha intentado ejecutar una consulta que no incluye la expresion
especificada 'Fecha' como parte de una funcion de agregado

Este anuncio de error es el que no comprendo muy bien a que se refiere con "Funcion Agregado", la verdad es como que no lo quiere reconocer el campo Fecha , o es que falta algun operador adicional que pueda reconocerlo, Bueno agradesco tu ayuda de antemano.

gracias
0
haznaranv Mensajes enviados 3 Fecha de inscripción viernes, 18 de septiembre de 2009 Estatus Miembro Última intervención sábado, 19 de septiembre de 2009
19 sep 2009 a las 09:58
Hola Elinv
Te Doy las gracias por la ayuda ya FUNCIONA de verdad eres un !! GENIO ¡¡¡, en el Boton comand3 que dice Agrupado le cambie el BETWEEN por las condicionales que habia en el Boton comand1 (Primera forma), por que cada vez que leia una fecha en la cual no habia datos funcionaba bien pero cuando le daba otra fecha es como si seguia dando el mismo resultado osea Nulo, cambiandole el BETWEEN me cogia perfectamente los valores.

y tambien lo que hice fue que para funcionara con un solo boton, en este caso con el Boton Comand1 le agregue en la parte final el Comand3_click y me corrio de maravilla todo.

Aunque tengo que darle mas forma, pero de eso yo ya me ocupo, De verdad muchas Gracias por la Ayuda, ahora me he dado cuenta en los errores que he estado cometiendo.

Gracias ELINV
Muchas Gracias
0
Ha sido un placer desde bragado, buenos aires, argentina.

Atentamente.


Elinv
0