Foros del Web » Programación para mayores de 30 ;) » .NET »

3 de 4 (WinForm): contar registros de Access

Estas en el tema de 3 de 4 (WinForm): contar registros de Access en el foro de .NET en Foros del Web. 3 de 4: Ya sé que esto debe estar más que tratado, pero no consigo hacerme con ello. Símplemente quiero hacer a una consulta con ...
  #1 (permalink)  
Antiguo 20/10/2004, 12:52
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
3 de 4 (WinForm): contar registros de Access

3 de 4:

Ya sé que esto debe estar más que tratado, pero no consigo hacerme con ello. Símplemente quiero hacer a una consulta con OleDb y que me devuelva las filas encontradas. Tengo muchos ejemplos, pero son para SQL y, aunque suponía que era prácticamente igual no resultó.

SQL = "SELECT * FROM tabla WHERE campo='valor'"

¿Se puede?

Un saludo y gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 20/10/2004, 17:00
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Puedes usar una funcion agregada...

Cita:
SQL = "SELECT count(*) FROM tabla WHERE campo='valor'"
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 20/10/2004, 17:15
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Espero equivocarme, pero Count() devuelve todos los registros de la tabla haciendo caso omiso de los posibles condicionantes de la consulta, como la búsqueda de un determinado valor.

Creo que lo comprobé hace algún tiempo. Además también lo he leido

http://www.asptutor.com/sql/sql4.asp
http://www.clikear.com/manuales/sql/sql4.asp

Muchas gracias de todas formas.

Un saludo.

A por el cuarto, je je.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 20/10/2004, 17:22
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Espero equivocarme, pero Count() devuelve todos los registros de la tabla haciendo caso omiso de los posibles condicionantes de la consulta
De hecho no hay problema si tiene condicionantes friend..

Ya que si tengo ésto:

Cita:
select count(*) from customer
where itemid between 2 and 10
Me funciona sin problemas, y los links que mandaste hacen la observación pero en el caso del group by , ya que si lo estas usando tienes que poner cada campo dentro del group by porque debe estar contenida en la funcion agregada por ejemplo si haces ésto:

Cita:
select campo1,count(*) from customer
where itemid between 2 and 10
Te va a marcar error... pero si haces con group by quedará resuelto:
Cita:
select itemid,count(*) from customer
where itemid between 2 and 10
group by itemid
Pero ese es otro caso, pero para el primero te funciona sin problemas, si no haz la prueba.

Salu2
  #5 (permalink)  
Antiguo 20/10/2004, 20:12
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Rootk tiene razón. Yo hago una consulta contra una base de datos para rellenar un datagrid, que tiene un montón de condiciones, con el select count(*), para que en caso de que el resultado sea 0 registros no muestre el datagrid, y funciona de fábula.

Un saludo.
__________________
Pide lo que quieras...y luego paga por ello
  #6 (permalink)  
Antiguo 21/10/2004, 05:03
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Muy bien, gracias. Pues esta misma tarde lo pruebo. Ya os contaré.

Gracias de nuevo.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #7 (permalink)  
Antiguo 21/10/2004, 05:06
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Se me olvidaba, ¿tengo que usar ExecuteNonQuery? ¿O era ExecuteScalar?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #8 (permalink)  
Antiguo 21/10/2004, 08:30
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
¿tengo que usar ExecuteNonQuery? ¿O era ExecuteScalar?
Puedes usar ExecuteScalar para regresar el valor de tu funcion agregada (select count(*) from tabla)
  #9 (permalink)  
Antiguo 21/10/2004, 14:40
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Bien, bien, estupendo. Ya me funciona.

Pero voy a tensar un poquito más la cuerda. La verdad es que me he hecho siempre lios con las rutinas de conexión y consultas a bases de datos, sobre todo en el orden en el que se ponen las distintas sentencias. Pues bien, yo lo que quería hacer (y ya lo habéis conseguido) es repetir una consulta con un bucle, es decir, cada vuelta del bucle cambia una condición de la consulta (WHERE ...). Pero creo que abro y cierro la conexión demasiadas veces y tarda un poco. Los pasos que sigo son los siguientes (de memoria):

Código:
Dim Con As OleDbConnection = New OleDbConnection(Provider=Microsoft.Jet.OLEDB....)
Do While archivo=......
Dim Cmd As OleDbCommand = New OleDbCommand("SELECT...", Con) Con.Open() Cmd.ExecuteScalar() ...... Con.Close()
Loop Con = Nothing
Como la consulta se va generando dinámicamente, no para de abrir y cerrar la conexión con la consiguiente espera. ¿Puedo abrir la conexión antes de definar el objeto OleDbCommand y no cerrarlo hasta que es acabe el bucle? Algo así:

Código:
Dim Con As OleDbConnection = New OleDbConnection(Provider=Microsoft.Jet.OLEDB....)
Con.Open()
Do While archivo=......
Dim Cmd As OleDbCommand = New OleDbCommand("SELECT...", Con) Cmd.ExecuteScalar() ...... Cmd.Close()
Loop Con.Close() Con = Nothing
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #10 (permalink)  
Antiguo 21/10/2004, 15:14
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
No hay problema.. de hecho te puede quedar así:
Cita:
Dim cmd As OleDbCommand

con.Open()
For i As Integer = 0 To 10
sSQL = "select..."
cmd = New OleDbCommand(sSQL, con)
cmd.ExecuteNonQuery()
..
..
Next
con.Close()
Salu2
  #11 (permalink)  
Antiguo 21/10/2004, 15:44
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Muchísimas gracias.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:46.