• Domingo 22 de Diciembre de 2024, 18:50

Autor Tema:  Cuantos Hay De X Campo De La Tabla Sent.sql  (Leído 10361 veces)

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Cuantos Hay De X Campo De La Tabla Sent.sql
« en: Martes 17 de Octubre de 2006, 23:51 »
0
Hola a todos

No sé a quien preguntarle esto, asi que lo pregunto en foros,solocodigo para saber su opinion sobre de que forma podría hacer lo siguiente...



Tengo un archivo en Excel de algo que alguien me pidio el favor de hacerselo a programa (ahi es donde entro yo con el vb). En la imagen se ven 3 cuadrillas, en la primera se repiten nuevamente las primeras 6 columnas, porque es por Sucursal y Mes, y ya le hice una ventanita a eso en VB para llenar esos datos, el cual es la segunda imagen que pongo.



Mi dilema es la ultima cuadrilla o recuadro, la cual si se fijan, es un conteo de la primera cuadrilla.  Yo tengo una Tabla en Access con campos de la primera cuadrilla, lo que no sabría bien es como realizar una consulta SQL que me cuente lo que refleja la ultima cuadrilla o recuadro, la que dice RESUMEN POR USO Y CONDICION.

Por medio de un boton en la ventana, yo cargo otra ventana con un MSFlexGrid que deberia mostrar lo mismo que ese ultimo recuadro, sus datos en base a la sentencia SQL.  Enlace la grilla a un control Data Dao e intente probar con algo como esto:

Código: Text
  1.  
  2. Data1.DatabaseName = App.Path & "\BDVehiculos.mdb"
  3. Data1.RecordSource = "Select Count(TxtUso) From TR_CTRL_VEHIC_KM Where TxtUso = 'AVANCE'"
  4.  
  5.  

Siempre he usado sentencias SQL sencillas, y cualquier cálculo lo hago por código del vb pero esta vez deseo poderlo hacer por medio de sentencias SQL, pero no tengo mucha idea clara de como hacer esto.

Que me aconsejan que pueda hacer para poder arrojar en una rejilla algo como lo expuesto en este post  :huh:

muchas gracias por tu tiempo amigo.

PD: Me falto un dato en la ventana KM ACT pero ya lo arreglo  :comp: mil perdones se me paso.
Si esto es Leído por accidente, induzca al vomito

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #1 en: Miércoles 18 de Octubre de 2006, 00:43 »
0
La grilla me muestra o me arroja una sola columna con esto:
Código: Text
  1.  
  2.     Data1.RecordSource = "Select Count(TxtUso) From TR_CTRL_VEHIC_KM Where " & _
  3.                          "TxtUso = 'AUTOGAS' and TxtUso = 'AVANCE' and TxtUso = 'DOMICILIO' and " & _
  4.                          "TxtUso = 'FLETERO' and TxtUso = 'MIXTAS'"
  5.  
  6.  

Como le haria para que me mostrara la grilla con las 5 columnas de dato :(
sé que es solo un comienzo, pero es para ver si es posible o no formar tal consulta.
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #2 en: Miércoles 18 de Octubre de 2006, 01:09 »
0
Cita de: "UserCode"
La grilla me muestra o me arroja una sola columna con esto:
Código: Text
  1.  
  2.     Data1.RecordSource = "Select Count(TxtUso) From TR_CTRL_VEHIC_KM Where " & _
  3.                          "TxtUso = 'AUTOGAS' and TxtUso = 'AVANCE' and TxtUso = 'DOMICILIO' and " & _
  4.                          "TxtUso = 'FLETERO' and TxtUso = 'MIXTAS'"
  5.  
  6.  

Como le haria para que me mostrara la grilla con las 5 columnas de dato :(
sé que es solo un comienzo, pero es para ver si es posible o no formar tal consulta.
para usar funciones agregadas de SQL (count,sum,max etc..)  nesecitas agrupar... por ejemplo:


"Select Count(TxtUso),condicion,kim_ant,km_act From TR_CTRL_VEHIC_KM Goup by TxtUso"


que es lo que deseas mostrar?


:)
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #3 en: Miércoles 18 de Octubre de 2006, 02:04 »
0
Citar
que es lo que deseas mostrar?

hehehe... lo que está arriba, el ultimo recuadro del excel en base al primero  :P

Bueno yo lo único que le puse a la sentencia fue varios Count, asi si me saco las demas celdas pero al meterle datos en la ventana, no me arroja nada, puros 0 jejeje...

Pero hasta ahora no he logrado hacerlo  <_<

Gracias por el dato de agrupar, no sabia, la sentencia que pones no sé aun como acomodarla porque hay una parte que no me sirve y pongo en negrita:

"Select Count(TxtUso),condicion,kim_ant,km_act From TR_CTRL_VEHIC_KM Goup by TxtUso"

en mi caso seria sin lo que está en negrita, asi:
"Select Count(TxtUso) From TR_CTRL_VEHIC_KM Goup by TxtUso"

pero desde luego, que eso asi no me sirve, creo que un problema principal es la misma tabla, voy a ver que hago  :unsure:
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #4 en: Miércoles 18 de Octubre de 2006, 02:57 »
0
Parece que ya entendi :P


el excel no tiene nada que ver... solo es la informacion final que quieres lograr pero ya todo esta en access... ¿o no? :unsure:


segun veo en el consentrado de abajo solo muestra la cantidad de vehiculos de cada tipo (count que ya hiciste) ahora la segunda columna cuanta las unidades activas de cada 'uso', luego cuanta cuales estan en taller, y la suma de los km recorridos estoy bien?


bueno puedes hacer ....

Citar
con estos campos la probe

tabla
------------------
txtuso
cond
kmrec



Código: Text
  1.  
  2. SELECT a.txtuso, Count(a.txtuso) AS CANT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.cond="Activa"  AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS ACT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.cond="Taller"  AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS TALLER, (SELECT sum(TR_CTRL_VEHIC_KM.kmrec) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS KMREC
  3. FROM TR_CTRL_VEHIC_KM AS a
  4. GROUP BY a.txtuso;
  5.  
  6.  

que es una consulta con tres subconsultas para contar las dos condiciones (Activa y Taller, y poder sumar los kms :) )


Espero que te sirva de algo


Suerte!
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #5 en: Miércoles 18 de Octubre de 2006, 22:06 »
0
muchas gracias F_Tanori es precisamente la sentencia que debia tener y que gracias a tu super codigo  :P  se cumple la consulta en un 80%  :comp:

Arroja una precisa consulta en CANT, sé que al compararlo con como está el de excel, los campos ACT, TALLER y Km Rec no son iguales, pero esa sentencia es mejor que cualquier intento que yo haya hecho.

Me puse en la celda de la columna CANT, la que dice por ejemplo:
[AUTOGAS         ][      3]  <-- esta celda

Tiene esto:
=CONTAR.SI($C$7:$C$32;"Autogas")+CONTAR.SI($I$7:$I$32;"Autogas")

En la de ACT con un 2 dice:
=SUMA(SI($D$7:$D$32="activa";SI($C$7:$C$32="Autogas";1;0)))+SUMA(SI($J$7:$J$32="activa";SI($I$7:$I$32="Autogas";1;0)))

E igual con la columna TALLER en donde sale un 1 dice:
=SUMA(SI($D$7:$D$32="Taller";SI($C$7:$C$32="Autogas";1;0)))+SUMA(SI($J$7:$J$32="Taller";SI($I$7:$I$32="Autogas";1;0)))

Bueno, yo de excel no sé mucho, calculos básicos, no me habia posicionado en las celdas para ver la formula, pero se ve que además del COUNT, se necesita metersele el SUM para ver si la consulta, arroja las sumas de ACT, TALLER ya que al parecer esas columnas no son COUNT sino SUM.

Muchas gracias por la SQL en verdad que me hacia mucha falta  :comp:

EDITANDO:

Un screenshot de la consulta:


Por ejemplo en la Tabla hay 11 veces ACTIVA pero hay solo 2 ACTIVAS referentes a AUTOGAS, y MIXTO hay 2 pero uno tiene ACTIVA, y el otro TALLER, verdad que es un infierno esta consulta, estoy totalmente de acuerdo en eso, me lleva  :(


Si todo esto se complica mucho, yo creo que dejaria la sentencia hasta donde se refleja la consulta de CANT en donde sirve bien el COUNT y haria otra tabla para ver si con otra sentencia en base a COUNT (pero para esta otra tabla) podría tal vez hacer lo de los otros datos.  Voy a esperarme haber alguna sugerencia antes de hacerlo :) porque ya me ha pasado antes hacer algo, y luego por alguna mejor solucion o cambio de cosas que me dicen, termino borrandolo convirtiendose asi en un tiempo perdido :(
Si esto es Leído por accidente, induzca al vomito

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #6 en: Miércoles 18 de Octubre de 2006, 23:20 »
0
hehehe... "demasiadas continuaciones de linea" es lo que me saco el VB por poner tantos & _
porque ver toda esa gigante SQL en una sola linea, huy me vuelvo loco :D  hehehe...
A la final también sé que VB tiene limites en todo, ya antes me paso algo asi con una SQL largota, VB no permitio más alargarla horizontalmente o algo asi, asi que como que mejor no me complico más con eso.

bueno, estaba alargando mucho la SQL para ver si lograba la cuestion, pero como que si me va a tener que tocar hacer otra tabla exclusiva para procesar este tipo de consulta, odio las cosas que vienen de Excel, pero que se le va a hacer, ni modo  :(
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #7 en: Jueves 19 de Octubre de 2006, 07:31 »
0
Hola UserCode

En excel los datos estan acomodados asi
numero|uso|condicion|km ...etc... esa misma tabla se repite a un costado

lo que hace es que son dos tablas (almenos las que se alcanzan a ver)


pero en la base de datos esto no funciona asi los registros irian hacia abajo en una sola tabla entonces segun veo en la formula

te posicionaste en la celda E42 y te aparece la formula

=SUMA(SI(D7:D32="activa";SI(C7:C32="Autogas";1;0)))
+SUMA(SI(J7:J32="activa";SI(I7:I32="Autogas";1;0)))

En relidad no esta sumando (si pero no :P)

Esta contando...

Esta contando todas las unidades que sean ACTIVAS en el rango D7:D32 (que es la primera tabla la que tiene datos en la columna de condicion)... SI(C7:C32="Autogas";1;0) en esta parte indica  que si es Autogas entonces la CUENTE (devuelve 1+1+1... cuando sea autogas ) si no devuelve 0 entonces no es suma sino incremento osea CONTAR :) donde si hay una suma es en

+SUMA(SI(J7:J32="activa";SI(I7:I32="Autogas";1;0))) esa es una suma pero es una suma de totales porque es la misma formula de la tabla 1 (B7:G32) y la tabla 2 (H7:M32) es decir son el total de activas en las dos tablas... para ese tipo de vehiculo lo cual se debe repetir para cada vehiculo en la tabla de resumen

Haz la prueba agregando en la celda I7 Autogas y en la celda J7 Activa la celda
D42 debe de valer 4 y la E42 3
(esto si los datos siguen segun la imagen)


Si esta teoria es correcta entonces no es suma es conteo y si son conteo y aplicas la sentencia que te envie debe funcionar, yo lo probe es mas te envio una prueba sale

Ademas

Citar
Bueno, yo de excel no sé mucho, calculos básicos, no me habia posicionado en las celdas para ver la formula, pero se ve que además del COUNT, se necesita metersele el SUM para ver si la consulta, arroja las sumas de ACT, TALLER ya que al parecer esas columnas no son COUNT sino SUM.


Sum seria si tuvieras valores numericos, como los kilometros eso si los puedes sumar pero como sumarias ACTIVA+ACTIVA  TALLER+TALLER en relidad es conteo




Suerte
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #8 en: Jueves 19 de Octubre de 2006, 16:18 »
0
Si, tienes razón está contando me deje llevar por lo del SUM de la formula  :rolleyes:

Citar
En excel los datos estan acomodados asi
numero|uso|condicion|km ...etc... esa misma tabla se repite a un costado

lo que hace es que son dos tablas (almenos las que se alcanzan a ver)

Si, es que es porque una mitad es por ingreso de Sucursal, y la otra mitad es por Mes, se ve arriba en la imagen completa del excel en el primer post, yo en vez de hacer dos tablas lo que normalmetne hago en esos casos, es agregar un campo más, es decir, dos tablas con 6 o 7 campos iguales es muy redundante, yo agarro, fusiono en una sola tabla pero agrego un campo o dos más, en la Tabla hay un campo Sucursal y otro Mes, de hecho, la Sucurlsa y el Mes siempre se indican en otra ventanita de inicio, se selecciona de unos Combobox, de una lista, y cualquier consulta sea por Sucursal o por Mes, las filtro por SQL con eso de WHERE Campo='Dato' o Where Campo= & variable y cosas asi.

De hecho, hay otra sección del archivo Excel donde hay dos tablas igualitas, a diferencia que una tiene un campo más, ahí yo hice una sola Tabla en la BD, pero con un campo más.. y en la ventana en VB es un Checkbox, guarda un valor booleano True o False o mejor 0 o 1 y en base a eso se indica la consulta.

Citar
Si esta teoria es correcta entonces no es suma es conteo y si son conteo y aplicas la sentencia que te envie debe funcionar, yo lo probe es mas te envio una prueba sale

Sé que esa SQL es, por eso partiendo de ella voy a (entre ensaño y error) a tratar de hacerles pequeños cambios para ver si da los datos correctos, ya que CANT está bien pero los demas aun no, es decir, yo ya le meti a la Tabla esos mismos datos, estos:


Y al consultar deberia arrojarme algo como esto: (lo que está en Rojo)


Pero al consultar me saca es esto:
(claro está en orden por Order by TxtUso en la SQL a la cual está conectado el MSFlexGrid a diferencia del orden en el Excel, pero si son los mismos datos todos)

En donde solo CANT es igual, el resto no porque el los demas ACT y TALLER tambien están contando como CANT y su conteo es diferente a CANT, es más como por selección más especifico como en la tabla de Access que está en mi post anterior.

Pero como ya habia comentado antes, esa SQL... esa misma es :) solo tengo entonces que (partiendo desde tu SQL) comenzar a editarle por aqui y por allá hasta que saque la misma consulta  :smartass:
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #9 en: Jueves 19 de Octubre de 2006, 17:47 »
0
Hola

De verdad que yo no le veo problema a eso :P

1- lo que necesitas es contar el total de cada unidad

Código: Text
  1.  
  2. SELECT TR_CTRL_VEHIC_KM.txtuso, Count(TR_CTRL_VEHIC_KM.cond) AS CANT
  3. FROM TR_CTRL_VEHIC_KM
  4. GROUP BY TR_CTRL_VEHIC_KM.txtuso;
  5.  
  6.  


2- Contar cuantas estan tienen Condicion de Activa

Código: Text
  1.  
  2. SELECT TR_CTRL_VEHIC_KM.txtuso, Count(TR_CTRL_VEHIC_KM.cond) AS TALLER
  3. FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.cond=&#34;TALLER&#34; GROUP BY TR_CTRL_VEHIC_KM.txtuso;
  4.  
  5.  


3- Contar cuantas estan tienen Condicion de taller

Código: Text
  1.  
  2. SELECT TR_CTRL_VEHIC_KM.txtuso, Count(TR_CTRL_VEHIC_KM.cond) AS TALLER
  3. FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.cond=&#34;TALLER&#34; GROUP BY TR_CTRL_VEHIC_KM.txtuso;
  4.  
  5.  


4- y Sumar los Kilometros recorridos de cada tipo de unidad
Código: Text
  1.  
  2. SELECT TR_CTRL_VEHIC_KM.txtuso, Sum(TR_CTRL_VEHIC_KM.kmrec) AS KM_REC
  3. FROM TR_CTRL_VEHIC_KM GROUP BY TR_CTRL_VEHIC_KM.txtuso;
  4.  
  5.  

entonces si juntas estas 4 consultas te da

Código: Text
  1.  
  2. SELECT a.txtuso, Count(a.txtuso) AS CANT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.cond=&#34;Activa&#34;  AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS ACT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.cond=&#34;Taller&#34;  AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS TALLER, (SELECT sum(TR_CTRL_VEHIC_KM.kmact)
  3. FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS KMREC
  4. FROM TR_CTRL_VEHIC_KM AS a
  5. GROUP BY a.txtuso;
  6.  
  7.  

Lo que ocurrio en la tabla que muestras qu te aparecen 11 activas 2 en taller 41780 km es que perdiste la relacion y te esta mostrando el total de activas
sin importarle cual tipo de vehiculos, porque no sabe cual es, por eso las subconsultas llevan

Código: Text
  1.  
  2. WHERE TR_CTRL_VEHIC_KM.txtuso=a.txtuso
  3.  
  4.  

donde a.txtuso es el campo txtuso de la tabla principal, no se si esto te enrede?



Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #10 en: Jueves 19 de Octubre de 2006, 20:04 »
0
Citar
donde a.txtuso es el campo txtuso de la tabla principal, no se si esto te enrede?

bueno, TR_CTRL_VEHIC_KM con su campo TxtUso es donde se guardan estos datos, para mi esa es la tabla principal  :unsure: aunque tengo otra tablita llamada TB_USO con un solo campo TxtUso, y otra TB_CONDICION con TxtCondicion, de estas dos ultimas tablas es que los Combobox de la ventana sacan la lista.  Porque esa a del a.txtuso yo la cambie por la misma de siempre  TR_CTRL_VEHIC_KM, será que ahí está la pieza que me falta?  :huh:

Bueno, yo cambie el a.txtuso por TB_USO.TxtUso (en todo donde decira a.txtuso) y me saco error, ese error que a veces salen con las SQL de "se espera 1" o 2.

PD: voy a hacerme un cursito de excel pq como que me hace falta, de SQL pues será a punta de internet pq cursos de SQL no existen donde vivo, me hace falta camino en eso.
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #11 en: Jueves 19 de Octubre de 2006, 20:28 »
0
:lol:

En definitiva te hace falta leer porque estas 'enfrascado' :P, revisa la consulta que viene en el archivo de access que te envie entra en la vista SQL y revisa los datos de la tabla y fijate que todo concuerda por eso es que no entiendo porque tanto problema :P

esa misma instruccion se la pasas al Data y listo :)


te recomiendo una pagina de donde bajar cursos

http://www.lawebdelprogramador.com/cursos/ (no es competencia es apoyo  :ph34r: )

y la puerta de internet www.google.com

Código: Text
  1. FROM TR_CTRL_VEHIC_KM AS a
  2.  

esa a es un alias que le puse a la tabla para crear la relacion porque era en la misma tabla y diferenciarla


Suerte
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #12 en: Jueves 19 de Octubre de 2006, 21:10 »
0
Ahora si :)



Si era la a es que en el primer post no se indico nada de alias y yo vengo y cambie eso por el nombre de la tabla &lt;_&lt;

Probe la SQL que no me daba bien en Access y daba igual de mal, pero tome la del archico Access que me has mandado y ahí simplemente terminando de completar el nombre de un campo... listo! y de vuelta al control en vb y ahora si rula  :smartass:

gracias compadre, ya tome nota de todos sus hilos de todo este asunto y en verdad que me alegra no haber tenido que recurrir a soluciones poco ortodoxas o como se le desea a gusto indicar, pero es bueno encaminarse a probar con como debe ser.

Consulta rules  :kicking:
Si esto es Leído por accidente, induzca al vomito

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #13 en: Viernes 20 de Octubre de 2006, 16:16 »
0
hola nuevamente, mil disculpas perdonen todos los lectores y más F_Tanori (ahora si lo escribi bien) por alargar la ayuda de la SQL, referente a las siguientes preguntas...

Esa consulta que hace la SQL, como podría hacer una suma de KmRec de la tabla de esta forma:

Toy hecho bolas con eso  :blink:  pq ni idea de como sacar el dato de una palabra reservada (AS TOTAL) de una SQL a un TextBox o Label en la ventana. Perdon por preguntar esto ahora y no antes, pero no lo habia visto bien en el Excel, cuando vi al final ese TOTAL CILINDROS, en seguida me dije.. me lleva la que me trajo :( no pregunte por eso al momento.

Y tambien entre lineas del WHERE de la SQL he metido TR_CTRL_VEHIC_KM.TxtSucursal='NOMBRE_SUCURSAL" AND TR_CTRL_VEHIC_KM.TxtMes='OCTUBRE' AND... el resto normal de la sql

Bueno yo he agregado eso de la Sucursal y el Mes "entre lineas" del WHERE como ya he comentado y pues esta asi:

Código: Text
  1.  
  2. &#34;SELECT a.txtuso, Count(a.txtuso) AS CANT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.TxtSucursal='&#34; & SeleccionSucursal & &#34;' AND TR_CTRL_VEHIC_KM.TxtMes='&#34; & SeleccionMes & &#34;'AND TR_CTRL_VEHIC_KM.txtcondicion='ACTIVA'  AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS ACT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.TxtSucursal='&#34; & SeleccionSucursal & &#34;' AND TR_CTRL_VEHIC_KM.TxtMes='&#34; & SeleccionMes & &#34;' AND TR_CTRL_VEHIC_KM.txtcondicion='TALLER'  AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS TALLER, (SELECT Sum(TR_CTRL_VEHIC_KM.TxtkmRec) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.TxtSucursal='&#34; & SeleccionSucursal & &#34;' AND TR_CTRL_VEHIC_KM.TxtMes='&#34; & SeleccionMes & &#34;' AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS KMREC FROM TR_CTRL_VEHIC_KM AS a GROUP BY a.txtuso;&#34;
  3.  
  4.  

Bueno no logre que los nombres en la Columna USO saliesen en base a Sucursal y Mes, pero si los demás campos (menos CANT) sino ACT, TALLER, KMREC en la tabla. Porque por ejemplo siempre salen 8 registros en la grilla, pero yo selecciono una Sucursal y un Mes que deberia dar en la consulta solo 3 registros, pero igual siguen saliendo los 8 aunque ya los demas datos (ACT, TALLER, KMREC) si varian, es decir, si muestran dependiendo de la Sucursal y Mes en la BD.

Una muestra de eso:

Ves, ya es diferente esta de la anterior, aunque sigue saliendo en la columna USO las 8, pero las demas columnas ya variaron, no muestran todo, sino solo al cumplirse tambien en el WHERE la sucursal y Mes. Pero se supone que en esta consulta en vez de 8 filas en USO deberian salir solo 3. Bueno la SQL me daba error al tratar de poner lo del Mes y Sucursal al principio, sea antes o despues entre lineas del SELECT a.txtuso, Count(a.txtuso) AS CANT asi que lo puse luego en lo demas, luego del WHERE

PD: Ya estoy leyendo y descartado algunos manuales SQL y haciendo las pruebas en la sección de Consultas de Access y en el mismo vb.
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #14 en: Viernes 20 de Octubre de 2006, 17:26 »
0
:P

Bueno mira AS TOTAL no es una palabra reservada :P tal vez solo AS pero en realidad es un campo calculado, o un alias del campo y lo puedes tomar como cualquier otro campo

Ej.

Código: Text
  1.  
  2. Dim Total
  3. Total=Data1.RecordSet!Total
  4.  
  5.  

Si lo unico que quieres es sumar porque no lo haces ya en el grid?, aun que lo extraño es que.... como la suma de los kilometros recorridos te de el total de cilindros  :huh:

Código: Text
  1.  
  2. Private Sub SumarColumna_Click()
  3. Dim Suma, i
  4.   For i = 1 To Me.DataGrid1.ApproxCount
  5.     Suma = Suma + Val(Me.DataGrid1.Columns(4).CellValue(i))
  6.  Next i
  7.  Me.Text2 = Suma
  8. End Sub
  9.  
  10.  

Con respecto a la otra duda.

el where seria a lo ultimo eln la tabla principal (a) ejemplo

(CODE)

SELECT a.txtuso, Count(a.txtuso) AS CANT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.cond="Activa"  AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS ACT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.cond="Taller"  AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS TALLER, (SELECT sum(TR_CTRL_VEHIC_KM.kmact) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS KMREC
FROM TR_CTRL_VEHIC_KM AS a
WHERE a.sucursal='NOMBRE_SUCURSAL' AND a.mes='OCTUBRE'
GROUP BY a.txtuso, a.sucursal, a.mes;

(/CODE) :P


Suerte y siguele....  :comp:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #15 en: Viernes 20 de Octubre de 2006, 18:34 »
0
Citar
Si lo unico que quieres es sumar porque no lo haces ya en el grid?, aun que lo extraño es que.... como la suma de los kilometros recorridos te de el total de cilindros  :huh:

Perdon, es que me deje llevar por como se ven las cosas en el Excel:  :lol:


Lo de Cilindros si parece tener su logica con las columnas CANT, ACT, TALLER.
Hay Total para cada columna, ya sé lo que voy a poner (otra grilla) por cierto, creo que nunca lo dije, pero son MsFlexGrid lo que tengo no DataGrid, voy a ver el cambiar entonces el MSFlexGrid por el DBGrid porque el DataGrid no me enlaza con el control, es que esta en DAO porque la BD esta en Access e interactua mas rapido el dao que el ado con el access.  El DBGrid si me tiene esas propiedades de rejilla.

Voy a poner un DBGrid más para suma y que qude asi en la ventana:


Ahora un favor, :) dejar que yo me mate el dia de hoy intentando y probando a ver si logro la suma de las 4 columnas (CANT, ACT, TALLER y Km Rec) si lo que está en rojo, ahora lo que está en azul pues ya se vera, Excel siempre ha sido un dolor de cabeza a la hora de que algo en VB o X Lenguaje imite/copie/haga algo de él :(

Código: Text
  1.  
  2. Private Sub SumarColumna_Click()
  3. Dim Suma, i
  4.  For i = 1 To Me.DataGrid1.ApproxCount
  5.    Suma = Suma + Val(Me.DataGrid1.Columns(4).CellValue(i))
  6. Next i
  7. Me.Text2 = Suma
  8. End Sub
  9.  
  10.  

Me dio error, pero ya cambiara un poco (pienso yo) porque ya no será en text ni label, sino en otro DBGrid.

Antes de terminar el día aviso que tal me fue, voy....
Si esto es Leído por accidente, induzca al vomito

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #16 en: Lunes 23 de Octubre de 2006, 01:39 »
0
hola, perdon por la demora es que otras cosas ¬¬ me consumen parte del tiempo y por eso no habia escrito antes.

Las sumas si como que es mejor o sin problemas, el no hacerlo por SQL (aunque si me gustaria ver esa sentencia por curiosidad) pero no esta mal simplemente generar la consulta en SQL y la suma que menciono, hacerla sumando los datos de las celdas del control grid o rejilla, es decir, ya en esto ultimo nada que ver con SQLs.

La SQL de consulta tenia una pequeña fallita pq al consutlar me fije que agarraba uno que otro registro que no entraba en algunos de los parametros indicados, al menos no respetaba mucho el Where de Sucursal y Mes, pero ahora si, ya lo hace, asi queda finalmente la SQL de consulta:

Código: Text
  1.  
  2. SELECT a.txtuso, Count(a.txtuso) AS CANT, (SELECT Count(b.txtuso) FROM TR_CTRL_VEHIC_KM as b
  3.          WHERE  b.txtcondicion = &#34;ACTIVA&#34;
  4.          AND       b.txtuso          = a.txtuso  
  5.          AND       b.txtsucursal   = a.txtsucursal
  6.          AND       b.txtmes         = a.txtmes        ) AS ACT, (SELECT Count(b.txtuso) FROM TR_CTRL_VEHIC_KM as b                        
  7.          WHERE  b.txtcondicion   =&#34;TALLER&#34;
  8.          AND       b.txtuso          = a.txtuso
  9.          AND       b.txtsucursal   = a.txtsucursal
  10.          AND       b.txtmes         = a.txtmes        ) AS TALLER, (SELECT Sum(b.TxtkmRec) FROM TR_CTRL_VEHIC_KM as b
  11.          WHERE  b.txtuso          = a.txtuso
  12.         AND        b.txtsucursal  = a.txtsucursal
  13.         AND        b.txtmes        = a.txtmes          ) AS KMREC
  14. FROM TR_CTRL_VEHIC_KM AS a
  15. WHERE a.txtsucursal=&#34;CORO&#34;
  16.        AND a.txtmes=&#34;OCTUBRE&#34;
  17. GROUP BY a.txtsucursal, a.txtmes, a.txtuso;
  18.  
  19.  

Una cosa a decir de esta SQL, lo cual es que es raro pero... esta SQL si me sirve en Access pero en VB no me muestra nada, el DBGrid si está conectado al Data, es algo muy extraño, al menos si sé que funciona bien la SQL pero no sé pq no sale en VB.  :huh:

El problema es que mientras no sepa pq la consulta de la SQL no sale en el DBGrid, no podré hacer el Total de cada columna  :(
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #17 en: Lunes 23 de Octubre de 2006, 01:59 »
0
Porque no adjuntas un ejemplo de tu proyecto?


para ver en que se te pede ayudar :)
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #18 en: Lunes 23 de Octubre de 2006, 02:14 »
0
Si es buena idea, está empezando asi que le falta... pero el .zip pesa 356KB y el adjuntar solo permite 128KB ¿será entonces por corre? pero preferiría adjuntar aqui, como le hago  :(
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #19 en: Lunes 23 de Octubre de 2006, 02:45 »
0
puedes usar algun servicio
como



http://rapidshare.de/

http://www.megaupload.com/es/

http://www.filefactory.com/

o cualquier servidor gratuito los subes y dejas el link :)
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #20 en: Lunes 23 de Octubre de 2006, 05:13 »
0
ya lo subi en FileFactory pero no sé que se hizo xD!!!
:-/

http://www.filefactory.com/file/990180/

 :unsure:
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #21 en: Lunes 23 de Octubre de 2006, 08:05 »
0
Hola UserCode

En esta maquina no funciona el dbgrid  :lightsabre:  , pero aqui esta unas instrucciones, debe de funcionar lo probe con flexgrid, pero como realmente el afectado es el data, debe de funcionar tambien con el dbgrid


Form:FrmResumenUsoCondicion
Evento:Form_Load

Código: Text
  1.  
  2. ls_SQL = &#34;SELECT a.TxtUso, Count(a.TxtUso) AS CANT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.txtcondicion='Activa' AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS ACT, (SELECT Count(TR_CTRL_VEHIC_KM.txtuso) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.txtcondicion='Taller' AND TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS TALLER, (SELECT sum(TR_CTRL_VEHIC_KM.txtkmrec) FROM TR_CTRL_VEHIC_KM WHERE TR_CTRL_VEHIC_KM.txtuso=a.txtuso) AS KMREC &#34;
  3. ls_SQL = ls_SQL & &#34;FROM TR_CTRL_VEHIC_KM AS a &#34;
  4. ls_SQL = ls_SQL & &#34; WHERE (((a.TxtMes)='&#34; & SeleccionMes & &#34;') AND ((a.TxtSucursal)='&#34; & SeleccionSucursal & &#34;')) &#34;
  5. ls_SQL = ls_SQL & &#34;GROUP BY a.TxtUso, a.TxtSucursal, a.TxtMes;&#34;
  6.  
  7. Set Me.Data1.Recordset = BD.OpenRecordset(ls_SQL, dbOpenDynaset)
  8.  
  9.  If Not Me.Data1.Recordset Is Nothing Then
  10.     If Not Me.Data1.Recordset.EOF Then
  11.         'Asegurarse que el recordcount no mienta :P
  12.         Me.Data1.Recordset.MoveLast
  13.         Me.Data1.Recordset.MoveFirst
  14.   End If
  15. End If
  16.  

Espero que te ayude
Nos estamos leyendo!  :hola:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #22 en: Lunes 23 de Octubre de 2006, 19:04 »
0
siii, ya se muestra, pero que raro de verdad que no arrojaba consulta antes, con esto ultimo es como forzarle al control data hacer un refresh o algo asi verdad!!

Este mismo código expuesto antes para la suma de una Columna de la rejilla:
Código: Text
  1.  
  2. Dim SumaCANT, i As Double
  3. For i = 1 To Me.DBGrid1.ApproxCount
  4.     SumaCANT = SumaCANT + Val(Me.DBGrid1.Columns(2).CellValue(i))
  5. Next i
  6. Me.TxtTotalCANT.Text = SumaCANT
  7.  
  8.  
No sé porque indica error de "El marcador no es válido" si es el mismo código, si hasta cambie el MSFlexGrid por el DBGrid para que el código fuese el mismo, ya que el MSFlex no tiena propiedad .ApproxCount pero el DBGrid si, pero no rula  :blink:

PD: No escribi antes pq estaba (estoy) googleando buscando con "Suma DBGrid" y ver si consigo algun código del que me pueda referenciar, siempre usaba rejillas para consulta, primera vez que interactuo más con estos controles de rejilla.
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #23 en: Lunes 23 de Octubre de 2006, 21:15 »
0
Hola

Mira esto
Para ver lo del Bookmark

Tambien puedes
Pruebar con esto....

Código: Text
  1.  
  2. Dim SumaCANT, i
  3. For i = 1 To Me.DBGrid1.ApproxCount
  4.    DBGrid1.Row =i
  5.    DBGrid1.RowBookmark(i)
  6.    SumaCANT = SumaCANT + Val(Me.DBGrid1.Columns(2).CellValue(i))
  7. Next i
  8. Me.TxtTotalCANT.Text = SumaCANT
  9.  
  10.  

o...

Código: Text
  1.  
  2. with me.Data1.Recordset
  3.   While Not .EOF Then
  4.      SumaCANT=SumaCANT+val(![CANT])
  5.      SumaACT=SumaACT+val(![ACT])
  6.      SumaKMREC=SumaKMREC+val(![KMREC])
  7.      .MoveNext  
  8.   loop  
  9. End with
  10.  
  11. Me.TxtTotalCANT.Text = SumaCANT
  12. Me.TxtTotalACT.Text = SumaACT
  13. Me.TxtTotalKMREC.Text = SumaKMREC
  14.  
  15.  

Pd. aqui no tengo VB asi que..... no lo probe... :whistling:

Suerte
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Cuantos Hay De X Campo De La Tabla Sent.sql
« Respuesta #24 en: Lunes 23 de Octubre de 2006, 22:12 »
0
el primero me da error :(  pero el segundo si furula bien  :yes:
bueno a excepción del SumaKMREC=SumaKMREC+val(![KMREC]) un error de "Uso no valido de Null"  :mellow:

Buscando con respecto a ese error, encontre esto por lo que solo poniendole un & "" a [KMREC] si sale la sumatoria de la columna, quedando asi esa linea:

SumaKMREC = SumaKMREC + Val(![KMREC] & "")

Código: Text
  1.  
  2.     Dim SumaCANT, SumaACT, SumaTALLER As Integer
  3.     Dim SumaKMREC As Double
  4.     With Me.Data1.Recordset
  5.         While Not Data1.Recordset.EOF
  6.             SumaCANT = SumaCANT + Val(![CANT])
  7.             SumaACT = SumaACT + Val(![ACT])
  8.             SumaTALLER = SumaTALLER + Val(![Taller])
  9.             SumaKMREC = SumaKMREC + Val(![KMREC] & &#34;&#34;)
  10.             Data1.Recordset.MoveNext
  11.         Wend
  12.     End With
  13.     Me.TxtTotalCANT.Text = SumaCANT
  14.     Me.TxtTotalACT.Text = SumaACT
  15.     Me.TxtTotalTALLER.Text = SumaTALLER
  16.     Me.TxtTotalKmRec.Text = SumaKMREC
  17.  
  18.  

 :ahora: si sale


Muchas gracias F_Tanori ahora si ha terminado esta telenovela, estoy en eterna gratitud, y yo que no sabia como sacar esos CANT, ACT y ect de la SQL, que por cierto falto TALLER pero ya está ahí, gracias gracias, saludos a la familia. :hola:
Si esto es Leído por accidente, induzca al vomito