Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
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???
Responder Con Cita
  #2  
Antiguo 29-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por (VIH)Lestat
Utilice el evento ONDBLCLIK pero me marco error
Pues como no nos digas cuál es el error y el código con el que intentas guardar los registros está difícil que le adivinemos.

// Saludos
Responder Con Cita
  #3  
Antiguo 29-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
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???'
Responder Con Cita
  #4  
Antiguo 29-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
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!
Responder Con Cita
  #5  
Antiguo 29-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
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!
Responder Con Cita
  #6  
Antiguo 29-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
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????
Responder Con Cita
  #7  
Antiguo 29-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:
Empezado por (VIH)Lestat
Código Delphi [-]
begin
  showMessage('Necesita indicar el nombre del Grupo');
  ModuloSID.IBQsel_alum.Cancel;
end;
ya que aquí no pones el dataset en modo de edición. Lo que comenta vtdeleon puede ser cierto también aunque según la ayuda de Delphi EditorMode := true debería poner el DBGrid (y por ende el dataset) en modo de edición.

// Saludos
Responder Con Cita
  #8  
Antiguo 29-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
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!
Responder Con Cita
  #9  
Antiguo 29-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 29-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por (VIH)
bueno tratare de usar el debugger si me dices como funciona...
Dale a F7 para compilar, linea por linea
__________________
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
Responder Con Cita
  #11  
Antiguo 29-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
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

Código Delphi [-]
alumnos.editormode:=true;
  alumnos.fields[0].asstring:='';//En esta parte es en donde se ocasiona el error
 alumnos.fields[1].asstring:='';//a que se debera... si supuestamente esta en modo de edicion el DBgrid asi como esta no???
Responder Con Cita
  #12  
Antiguo 29-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por vtdeleon
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.
Leiste 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!
Responder Con Cita
  #13  
Antiguo 29-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
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????
Responder Con Cita
  #14  
Antiguo 29-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
ya probe de esta manera y tampoco funciona me sigue marcando el mismo error.. 'No esta en modo de edicion'

Código Delphi [-]
 //Se limpia el registro que fue almacenado
             alumnos.EditorMode:=true;
             alumnos.Fields[0].Text:='';
             alumnos.Fields[1].Text:='';
             alumnos.Fields[2].Text:='';
             alumnos.Fields[3].Text:='';
             alumnos.Fields[4].Text:='';
             alumnos.Fields[5].Text:='';
             alumnos.Fields[6].Text:='';
             alumnos.Refresh; //se actualiza el DBGRid
Responder Con Cita
  #15  
Antiguo 29-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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:

Código Delphi [-]
Begin
  // quiero que aparezca una nueva fila en dbGrid1
  Query1.Append;
  Query1.FieldByName('Nombre').AsString := 'Juan';
  Query1.FieldByName('Apellido').AsString := 'Pérez';
  Query1.Post;
  // No tuve que hacer nada con el dbGrid1, al salir de aqui mostrará esa nueva
  // fila al usuario.!
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #16  
Antiguo 29-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
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.....
Responder Con Cita
  #17  
Antiguo 29-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
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!
Responder Con Cita
  #18  
Antiguo 29-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Si te interesa borrar el registro de la BD y la consulta es actualizable, podes llamar al método delete del query directamente:

Código Delphi [-]
Procedure TForm1.AlumnosDblClick(Sender : TObject);

Begin
  RegistrarBorrado;
  Query1.Delete;
end;

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:

Código Delphi [-]
Procedure TForm1.AlumnosDblClick(Sender : TObject);

Begin
  RegistrarBorrado;
  BorrarRegistro;
  Query1.Close;
  Query1.Open;
end;

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.
Responder Con Cita
  #19  
Antiguo 30-06-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
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???
Responder Con Cita
  #20  
Antiguo 01-07-2005
(VIH)Lestat (VIH)Lestat is offline
Miembro
 
Registrado: abr 2005
Posts: 95
Poder: 20
(VIH)Lestat Va por buen camino
¿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???
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:43:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi