Visual Basic - Problema con DBGRID

Life is soft - evento anual de software empresarial
   
Vista:

Problema con DBGRID

Publicado por javi (90 intervenciones) el 21/08/2008 00:07:38
Tengo un problema con un DBgrid.

¿Que pasa cuando la Base de Datos solo tiene 1 registro (por ejemplo)
y el DBgrid tiene de ancho para 15 filas (rows)?

Pues que queda feisimo (fatal) porque se ve un cuadro de color
gris vacio enorme, en el centro de la pantalla, del DbGrid con una
sola linea arriba del primer registro que a introducido el usuario.

¿Que forma hay de rellenar esto?
¿Que forma hay de que aparezcan 14 o 15 filas vacias en el DbGrid al
inicio?

El problema queda solucionado cuando el usuario ya a introducido 15
registros.....
¡¡Pero antes de eso... ¿como lo soluciono?

¿Alguna idea?

(y por favor, lo que quiero es usar un DbGrid y no un
FlexiGrid o un DataGrid)

Gracias.
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 con DBGRID

Publicado por Jorge Morales (14 intervenciones) el 21/08/2008 19:46:11
Saludos Javi (¿er?), no se que base de datos utlizas ni que haces con los datos que muestras en tu Grid, pero creo que con lo siguiente podrías tener las 15 filas vacias (o las que quieras) que se llenarán conforme insertes registros en tu tabla.

Primero crea una tabla con 15 o mas registros con un campo enumerando cada registro ej:

TablaConsecutivos

Consecutivo |
-------------------
1
2
3
4
...
...
...
15

Suponiendo que los registros que muestras estan en TablaRegistros y que en esta tabla hay algun campo llamado Cosecutivo por cada registro del Folio,

Folio | Consecutivo
--------|------------------
1 | 1
1 | 2
1 | 3
1 | 4
2 | 1
2 | 2
2 | 3
2 | 4
2 | 5
2 | 6
2 | 7
2 | 8

y para rellenar el grid crea una consulta así:

select r.*
from TablaConsecutivos c
left outer join TablaRegistros r
on r.consecutivo = b.consecutivo
where b.consecutivo <= 6 '<----Aqui indicas cuantas filas quieres mostrar
and r.folio = 1
order by isnull(r.consecutivo, 99999) asc

estamos mostrando solo 6 filas, en este caso (Folio = 1) solo se mostrarán 4 filas con datos y 2 filas vacias, para el caso de Folio = 2 se mostrarán las 8 filas con datos.
Este ejemplo lo hice en SQL Server 2000 con VB 6 y me sale perfectamente. Espero que te sea de mucha ayuda u ojalá algun otro comañero te pueda apoyar con este asunto.
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

RE:Problema con DBGRID

Publicado por Jorge Morales (14 intervenciones) el 21/08/2008 20:02:27
Mil disculpas, creo que la anterior consulta no es del todo eficiente, cambiala por esto:



select r.*
from (select * from TablaConsecutivos where maximo <= 6) c
full outer join TablaRegistros r
on r.consecutivo = b.consecutivo
and r.folio = 1
order by isnull(r.consecutivo, 99999) asc

ahora sí cuenta si te sirvió. Saludos!
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

RE:Problema con DBGRID

Publicado por javi (90 intervenciones) el 22/08/2008 00:11:15
Vale. me gusta.
O sea, a ver si lo he entendido bien.....

Me propones crear una tabla con 15 registros vacios, que se mostraran en el
DbGrid1 DETRAS (o a continuacion) de los registros normales. De tal manera
que segun los registros Normales que haya, se mostraran mas o menos
registros vacios haciendo que el total de los que se ven en el DbGrid sea siempre 15.

TA BUENO. Me gusta. Es una solucion. Muchas Gracias.

Solo a modo de anecdota (curiosidad) ¿¿¿sabes como he intentado (no ha salido
muy bien) resolverlo??? :-))))

He colocado encima de donde van las filas (he dejado libre la cabecera de cada
columna) he colocado UN PICTUREBOX con el anagrama de la empresa que cubre
todo el DbGrid (excepto las cabeceras de cada columna).

A medida que se van mostrando registros el TOP y el HEIGHT del PintureBox
se va restando el valor del ANCHO de cada fila. O sea el PintureBox se hace justo
mas pequeño para mostrar las filas con los registros. ¿me explico?

Lo malo, es que por lo visto el ancho no es EXACTAMENTE el mismo en cada
fila, porque cuando hay 1 o 2 filas llenas (registros) va bien..... pero cuando hay
10 filas (registros) el PictureBox no queda demasiado bien AJUSTADO, y siempre
o falta o sobra, y no encuentro un valor del "ancho de una fila" que sirva para
todas igual. (El ancho que me da en Propiedades no se acaba de ajustar bien
cuando hay 10 o 12 filas)

Muchas Gracias por tu respuesta. La probare y ya te dire algo.

Un saludo.
Javier
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

RE:Problema con DBGRID

Publicado por Jorge Morales (14 intervenciones) el 22/08/2008 21:18:22
Pues que bien que te haya interesado mi propuesta, avisanos si tienes dudas.

Saludos

PD. Respecto a la solucion que comentas, tambien estaba pensando en algo parecido jejejeje
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

RE:Problema con DBGRID

Publicado por javi (90 intervenciones) el 31/08/2008 02:15:55
Ante todo muchisimas gracias por tu respuesta.

Ya la he probado y funciona bien.

La he guardado en una carpeta para proximas ocasiones.

Gracias.
Un saludo.
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

RE:Problema con DBGRID

Publicado por javi (90 intervenciones) el 31/08/2008 02:16:31
Ante todo muchisimas gracias por tu respuesta.

Ya la he probado y funciona bien.

La he guardado en una carpeta para proximas ocasiones.

Gracias.
Un saludo.
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

RE:Problema con DBGRID

Publicado por Jorge Morales (14 intervenciones) el 01/09/2008 19:00:06
Hombre por nada, estamos para ayudar, me alegra que te haya servido.

Saludos
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