![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
almacenar datos con un DBGrid haciendo Doble clik en una celda
Disculpen señores pero tengo otra pregunta para ustedes .. a ver si me pueden ayudar?? la verdad espero que si???
Quiero almacenar datos en una tabla de 2 columnas del DBGrid pero quiero que este evento ocurra solo cuando yo le de doble click a la fila o al registro del dbgrid... pero no se que evento es el indicado para utilizar.... Utilice el evento ONDBLCLIK pero me marco error ... cual debo usar.... o creen que deberia usar OnKeyPress para darle ENTER y almacenar los datos??? cual? me recomiendan??? |
#2
|
||||
|
||||
Cita:
// Saludos |
#3
|
|||
|
|||
jajaj ok roman aqui te pongo el codigo que utilizo para almacenar los 2 datos en una tabla llamada IBTgrupos_al..
[CODE delphi] procedure Tcrear_grupo.alumnosDblClick(Sender: TObject); var nombre_grupo:string; begin nombre_grupo:=crear_grupo.clave_grupo.Text; //Asigna el nombre del Grupo a la variable if nombre_grupo<>'' then //Compara si el nombre del grupo fue proporcionado begin //pasa los parametros desde el DBGrid y almacena los datos ModuloSID.IBQalm_grupos.Params[0].AsString:=nombre_grupo; ModuloSID.IBQalm_grupos.Params[1].AsString:=alumnos.Fields[0].AsString; ModuloSID.IBQalm_grupos.ExecSQL; application.CreateForm(Tinfo_grupo, info_grupo); //Abre el mensage para indicar que el alumno ha sido almacenado en el grupo info_grupo.label1.Caption:='El alumno con la Matricula ' + alumnos.Fields[0].AsString + ' ha sido inscrito en el Grupo ' + crear_grupo.clave_grupo.Text; //Se limpia el registro que fue almacenado alumnos.EditorMode:=true; alumnos.Fields[0].AsString:=''; alumnos.Fields[1].AsString:=''; alumnos.Fields[2].AsString:=''; alumnos.Fields[3].AsString:=''; alumnos.Fields[4].AsString:=''; alumnos.Fields[5].AsVariant:=''; alumnos.Fields[6].AsString:=''; alumnos.Refresh; //se actualiza el DBGRid end else begin showMessage('Necesita indicar el nombre del Grupo'); ModuloSID.IBQsel_alum.Cancel; end; //Se cierra y abre la tabla para actualizar valores ModuloSID.IBTgrupos_al.Close; ModuloSID.IBTgrupos_al.Open; ModuloSID.IBQalm_grupos.Close; end; [/code] en donde nombre_grupo es la variable que almacena el nombre del grupo el cual va a hacer insertado en la tabla "IBTgrupos_al", "IBQalm_grupos" es el SQL que almacena los 2 valores en la tabla estos 2 valores los estoy pasando por parametros.... "MODULOSID" es el modulo de datos, El error que me sale dice: "Not in EDIT MODE" pero no me dice que componente no esta en modo de edicion.. sera el DBgrid???' |
#4
|
||||
|
||||
Ese error que citas es porque no has puesto el dataset en modo de edicion.
Antes de alumnos.EditorMode:=true; pon esto ==> alumnos.Edit; y antes de alumnos.EditorMode:=true; ==> alumnos.Post;
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#5
|
||||
|
||||
Perdon
Ahora estoy confudio Que es alumnos? el DBGRID? Si es asi me retracto de lo anterior
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#6
|
|||
|
|||
Oye VTdleon pero si estoy utilizando SQl para almacenar datos en una tabla no es necesario que yo utilice las clausulas EDIT y POST en la tabla que quiero almacenar por que estoy utilizando el metodo INSERTINTO (sql) por lo cual no necesito hacer POST para guardar valores.....
Pero GRax por el comentario... no sera que el DBgrid no esta en modo de edicion para borrar el registro que ya ha sido almacenado???? como se pone en modo edit???? |
#7
|
||||
|
||||
Conviene que aprendas a usar el debugger de Delphi para determinar con mayor precisión en qué parte del código te está saltando un error.
También creo que ya es tiempo que aprendas a usar las etiquetas [ code ] o [ delphi ]. No es muy cortés pretender que te ayuden si no te tomas esta mínima molestia. De lo que alcanzo a ver del código lo único que parece presentar algún problema es en Cita:
// Saludos |
#8
|
||||
|
||||
El DBGRID apunta a un IBQuery? Por que si es asi, este nunca estara en modo de edicion.
Utiliza IBDataset (Propiedades SQLInsert, SQLModify,...) para esto.
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#9
|
|||
|
|||
Oye Roman Perdon por lo de las etiquetas creo que no las use correctamente.. pero creo que si pudiste entender lo que te queria decir.. bueno tratare de usar el debugger si me dices como funciona...
ok?? perdon por las molestias causadas.... voy a checar y a tratar deutilizar el debugger como me sugeriste |
#10
|
||||
|
||||
Cita:
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! Última edición por vtdeleon fecha: 29-06-2005 a las 20:07:15. Razón: Correccion Etiqueta |
#11
|
|||
|
|||
oye vtdeleon ya corri mi aplicacion con F7 y al momento de darle doble click al registro del DBgrid (alumnos) almaceno la informacion correctamente pero pero el error 'Not in Edit MOde' se debe al DBgrid... esto aparece cuando quiero borrar el registro que ya le he dado doble click...
o sea en esta parte
|
#12
|
||||
|
||||
Cita:
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#13
|
|||
|
|||
Mi DBgird lo lleno por medio de un query en sql entonces su propiedad datasource pues tiene el valor del ibquery que lo llena.. pero al hacerle doble click al registro este dbgrid lo unico que me va a proporcionar son los parametros del dni del alumno que se encuentra en la columna 0 .. no se si me entendiste... pero el caso es que en mi dbgrid el usuario no pueda modificar ningun dato y pues lo que quiero despues de almacenar el parametro de la matricula del alumno es que ese registro se borre del dbgrid o que desaparezca pues!!!!
Si me entendiste???? |
#14
|
|||
|
|||
ya probe de esta manera y tampoco funciona me sigue marcando el mismo error.. 'No esta en modo de edicion'
|
#15
|
||||
|
||||
Que es alumnos?
El dbGrid? Un dbGrid, al igual que todos los controles asociados a datos no es mas que una representación visual de los mismos... pero estos están contenidos y son administrados por un descendiente de TDataSet. Si queres que un DBGrid muestre una nueva fila, lo que corresponde es crear un nuevo registro en el dataset asociado y rellenarlo como te convenga y el DBGrid se actualizará solito, que es precisamente una de las ventajas de usar controles DBAware. Un ejemplo, suponiendo que Query1 esta asociado a dbGrid1:
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#16
|
|||
|
|||
ok jachguate pero lo que quiero no es introducir datos al DBGRID alumnos si no es hacer que desaparezcan las filas ...
mira te voy a explicar... Yo tengo mi DBGRID llamado alumnos.. este lo lleno por medio del IBquery o lo tengo enlazado el query ... entonces cuando le doy doble click me guarda un valor de una columna del dbgrid en una tabla... asta aki todo bien ... pero quiero que el registro al que le di doble clik desaparezca del DBGRId ... como le hago???? Tengo que eliminar el registro del QUERY que llena el dbgrid???? como le hago??? como le hago para borrar un registro del query??' ya que este query es para hacer consulta..... |
#17
|
||||
|
||||
Saludos
Tengo entendido que un componente Query es de solo lectura :-S ![]() No se puede hacer Append, Insert, Edit :-S ![]() Intente hacer un append ahora mismo y me dio un "FATALITY" (ERROR) ![]() o Estoy equivocado ![]()
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#18
|
||||
|
||||
Si te interesa borrar el registro de la BD y la consulta es actualizable, podes llamar al método delete del query directamente:
Si no es actualizable, pues borra el registro por ejemplo lanzando otro query sobre la base de datos y luego cerras y volves a abrir el query conectado a la rejilla:
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate Última edición por jachguate fecha: 29-06-2005 a las 22:24:44. |
#19
|
|||
|
|||
Ahora que si no te entendi..... pero será que yo pueda borrar un registro de un query que es producto de una consulta, es decir si un query es una representacion de una tabla, puesto que una consulta en sql los valores que me devuelve los hace en una tabla,, entonces será que se puedan borrar estos valores que me arroja el query.....
o solo estoy fantasiando.. pero alguien me podria decir lo contrario??? |
#20
|
|||
|
|||
¿como se pueden borrar valores de una consulta???
es decir .. tengo un DBGRID que es llenado por medio de un query de consulta .. este query selecciona los datos de los alumnos que su estatus sea 'Nuevo Ingreso' o 'Activo' .. hasta aqui todo bien... el DBGrid se llena correctamente.. Pero cuando yo le doy doble click a una fila quiero que me almacene la clave del alumno y el nombre del grupo en una tabla... esto ya lo concegui... pero el problema es este..:: quiero que cuando la informacion del alumno seleccionado haya sido guardada en la tabla este registro se borre del data grid y no vuelva a aparecer...??? como le hago... es decir se puede utilizar la clausula DELETE sin que se borre el registro de mi base de datos??? |
![]() |
|
|
![]() |
|