FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con un dbgrid
Tengo un dbgrid asociado a un ibtable, que tiene la propiedad rowselect a TRUE.
Lo que me gustaria hacer es que se seleccione la fila que yo le indique. Me explico: quiero que si doy un alta o hago una modificación (q hago desde un formulario a parte), el registro que haya añadido/modificado, se seleccione en el dbgrid. Creo que no estaba en otro hilo, pero no lo sé seguro, por lo que si está pido disculpas. Gracias y saludos |
#2
|
||||
|
||||
Ese es el comportamiento normal de un dbgrid, adicionalmente puedes colocar la propiedad Always show select tambien a true. En tu pantalla de adicion/edición no estas recorriendo el dataset? por ejemplo para totalizar algo...
Saludos. |
#3
|
|||
|
|||
Cita:
Gracias. Saludos |
#4
|
||||
|
||||
Hola Nereida, puedes talvez utilizar la función Locate de tu ibTable, para hacer la busqueda y lo situa donde lo encuentra, sobre un campo X.
Ejemplo
O si sabes la fila donde se encuentra, también puedes usar RecNo.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. Última edición por Caro fecha: 25-04-2008 a las 14:26:17. |
#5
|
|||
|
|||
Cita:
La fila no la sé, ya que por ejemplo una inserción que he hecho, en el dbgrid aparece por la mitad. Gracias por tu paciencia y por ayudarme Saludos |
#6
|
||||
|
||||
Que operaciones haces despues de hacer el Tabla.post? no tienes algo en el evento afterpost?
|
#7
|
|||
|
|||
No he puesto nada, la verdad. Tengo que poner alguna cosa???
|
#8
|
||||
|
||||
Pregunto : Estarás utilizando dos DataSet's (TTable o TQuery ...) diferentes, y/o dos DataSource's diferentes, uno para la visualización del DBGrid, y otro(s) diferentes para la adición/edición del registro en cuestión ??
__________________
Piensa siempre en positivo ! |
#9
|
||||
|
||||
Nereida:
Revisando la sección de Acceso a bases de datos encontre este post tuyo Me parece que usas un grid para mostrar tus datos mediante un IBQuery y luego lo añades o editas en otra pantalla usando un IBTable (estoy en lo correcto?). En caso de ser asi seguramente al terminar la operación de adición/edicion haces un refresh y eso hace que pierdas el puntero del registro adicionado/editado. Por favor corrigeme si estoy equivocado. En caso de que fuera asi te sugiero hacer lo siguiente: Usa un TIBQuery para acceder a los datos, puedes colocar un datasource que relacione el grid y el TIBQuery en la pantalla de navegación y otro datasource que relacione el mismo TIBQuery (deberas usar File|Use unit para referenciar a la pantalla del grid) con los componentes dbEdits. Es decir 3 componentes: IBQuery1 -> apunta a tus datos Datasource1.Dataset = IBQuery1 dbgrid1.datasource = datasource1 Datasource2.dataset = Pantallagrid.ibquery1 dbedit1.datasource = datasource2 ... dbeditn.datasource = datasource2 Espero que te solucione el problema (si es que entendi bien tu diseño). Saludos |
#10
|
|||
|
|||
Cita:
En mi primer formulario, tengo un dbgrid (entre otros componentes, pero este es el que nos interesa). Mi dbgrid está relacionado con un ibtable (podría haber usado un query pero preferí el table pq como soy una novata, asi distingo entre las consultas y lo que es la tabla en sí). Por otra parte, cuando doy un alta, se abre un nuevo formulario cuyos registros están relacionados con un ibquery. Una vez los guardo, actualizo el ibtable. Es decir, en el dbgrid, una vez he dado un alta o hecho una modificación si que me la muestra correctamente. El problema es que me selecciona el registro del dbgrid que "quiere" (la programación de los objetos me cuesta entender como se ha hexo). Muchisimas gracias, de veras |
#11
|
||||
|
||||
Nereida, ahora si entendi tu problema:
1. Usas un IBTable para mostrarlo en el grid 2. Usas una forma aparte para añadir un registro mediante un IBQuery 3. Al añadir un nuevo registro...mocos!!!, el grid muestra lo que quiere. Solución: 1. Añade la unidad de laforma donde esta el grid a la pantalla de adición. 2. En tu forma de adición debes tener un datasource haz que apunte al IBTable de la forma del grid. 3. En la forma del grid pon lo siguiente en el boton Adición (o en el contro lque uses para llamar a tu forma de adicion):
Al tener 2 datasets diferente apuntando al mismo dato, nunca lograras coordinar la información. Por eso usa uno solo (IbTable en tu caso) para que al actualizar en un lado, se actualize automaticamente en el otro. Ahora si espero haberte ayudado. Saludos. |
#12
|
|||
|
|||
Cita:
Me parece que te estoy mareando un poco, asi que lo siento. |
#13
|
||||
|
||||
Si no quieres realmente modificar tu diseño (lo cual te recomiendo), lo que deberás de hacer es lo siguiente :
1. Antes de refrescar tu IBTable, grabas la clave de referencia en una variable auxiliar. 2. Refrescas tu IBTable (que no sé como lo harás...), porque si utilizas el IBTable.Refresh, deberás estar colocado sobre el registro en cuestión, y no haría falta toda esta discusión (creo yo). 3. Con un IBTable.Locate de la clave guardada, te vuelves a posicionar en el registro correcto. Lo suyo, por supuesto, es trabajar con un diseño correcto, por eso te aconsejo lo que se está debatiendo.
__________________
Piensa siempre en positivo ! |
#14
|
|||
|
|||
Cita:
Estoy por dejarlo por caso perdido pq esto parece que no se vaya a solucionar y aún como me ayudais. Saludos |
#15
|
||||
|
||||
Podrías poner aquí el código en cuestión, y así podremos ayudarte mejor ....
Seguro que tiene solución. No desesperes !
__________________
Piensa siempre en positivo ! Última edición por gluglu fecha: 25-04-2008 a las 16:37:23. |
#16
|
|||
|
|||
Sigo con el diseño q os dije: un ibtable y un ibquery por separado
Asi que os voy a mostrar el código por separado para asi a ver si os aclarais ya que las expliaciones como habeis podido comprobar, no son lo mio Código:
var varform:tform3; begin inherited; main.MainForm.n_clie:=TRUE; varform:=tform3.create(self); try varform.Caption:='Nuevo Cliente'; varform.IBQuery1.insert; varform.showmodal; finally varform.free; ibtable1.Refresh; end; Código:
procedure TForm3.FormCreate(Sender: TObject); begin ibquery1.Insert; end; procedure TForm3.AceptarClick(Sender: TObject); begin IBquery1.Post; IBquery1.close; end; |
#17
|
||||
|
||||
Repito lo que dije:
Quita, borra, elimina el IBQuery, usa solo el IBTable, que ambas formas apunten al IBTable, entonces tu codigo cambia asi:
En la otra forma 1. No debes repetir el insert en el Ibquery1 (formcreate) 2.
|
#18
|
||||
|
||||
Nereida, ¿como te fue?, ¿lo solucionaste?, me quede intrigado si implementaste lo que te sugeri....
Saludos. |
#19
|
|||
|
|||
Siento haber tardado tanto en contestar pero es que el trabajo lo estoy haciendo en unas prácticas que estoy haciendo en una empresa, por lo que no pude contestar en todo el fin de semana.
Por fin he podido hacerlo y como soy tan tozuda (las cosas como son) ha sido justo de la manera en la que yo decia pero con las ideas vuestras. Eso si, no me habia fijado pero si que habia puesto dos INSERT en vez de uno, que despiste. Lo que he hecho hace nada, ha sido declararme una variable global en la que almacenaba el código que introducia en el formulario que dije q solo era de añadir y modificar registros y guardar el registro. El código que cambié fue el siguiente: Código:
varform.free; ibtable1.Refresh; IBTable1.Locate('cod_clie',main.MainForm.aux2,[lopartialkey]); dbgrid1.Refresh; Gracias a los dos por tener tanta paciencia y ayudarme Saludos a los dos, espero que hayais pasado un buen fin de semana Última edición por Nereida fecha: 28-04-2008 a las 09:17:28. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problemas con un DBGrid | CFPA86 | Varios | 3 | 18-02-2008 16:59:38 |
Problemas Con Dbgrid | nikotina | Conexión con bases de datos | 4 | 13-10-2006 17:43:16 |
Problemas con el DBGrid | Shidalis | Conexión con bases de datos | 8 | 07-12-2005 15:53:50 |
Problemas con un dbgrid | majosf | Conexión con bases de datos | 2 | 08-09-2005 13:27:14 |
|