Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-04-2005
jdangosto jdangosto is offline
Miembro
 
Registrado: jun 2004
Posts: 82
Poder: 20
jdangosto Va por buen camino
Limpiar DBEdit

Buenas.

Tengo un dbedit que recoje los datos de un datasource, el problema es que cuando se me muestra me recoje el primer valor en vez de mostrarmelo en blanco.
Este valor que muestra va enlazado a un dblookupcombobox y rellena el edit automáticamente, y no consigo que se muestre vacio.

¿Cómo puedo realizar esto?

Desde ya, Gracias.
__________________
Lo que los Ojos ven y los Oidos Oyen la Mente se lo Cree (H.Houdini)
Responder Con Cita
  #2  
Antiguo 26-04-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
El DBEdit siempe te va a mostrar el valor del campo correspondiente al registro activo que normalmente será el primer registro en cuanto abres la tabla.

Si lo que quieres es que se presente en blanco, lo más probable es que lo que en realidad quieres es comenzar con un registro nuevo para lo cual puedes utilizar el método Append del dataset apenas abras la tabla.

Con eso, los DBEdit te mostrarán los valores por defecto de los campos, que muy posiblemente sean valores en blanco.

// Saludos
Responder Con Cita
  #3  
Antiguo 26-04-2005
jdangosto jdangosto is offline
Miembro
 
Registrado: jun 2004
Posts: 82
Poder: 20
jdangosto Va por buen camino
Gracias por la aclaración Roman, pero no estoy usando ningún ClientDataset, tan solo TTable y Datasource.

¿Con esos componentes se puede realizar lo que me indicas?
__________________
Lo que los Ojos ven y los Oidos Oyen la Mente se lo Cree (H.Houdini)
Responder Con Cita
  #4  
Antiguo 26-04-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si, más concretamente con el TTable.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 26-04-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 jdangosto
pero no estoy usando ningún ClientDataset
¿Quién mencionó un ClientDataset? Yo sólo dije un dataset que es el término genérico para cualquier descendiente de TDataset como lo es el ClientDataSet pero también el Table, el Query, etc.

// Saludos
Responder Con Cita
  #6  
Antiguo 27-04-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

Si lo que quieres es que se muestre vacio solo usa CLEAR: DBedit1.Clear;
Ten en cuenta que solo hara eso, limpiar la casilla del DBedit1!! y usalo despues de abrir la BD.

No modifica, ni agrega nada a la base de datos. Al menos que manejes el Dataset.
__________________
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
  #7  
Antiguo 26-09-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
hOla a todos tengo la misma duda,
solo que tengo los dbedit dentro de un groupbox,pero a mi en un principio los dbeditt me salen en blanco solo q al escribir en ellos y pulsar en el boton limpiar datos cuyo codigo es:
Código Delphi [-]
procedure TProveedores.LimpiarClick(Sender: TObject);
var
   I:integer;
begin
     for I:=0 to InsertarGroupBox.ControlCount do begin
         if (Components[i] is TDBEdit) then
         begin
           TDBEdit(Components[i]).Clear;
           NumInsertado.visible:=false;
         end;//if TDBedit
     end;
end;
aparentemente estan limpios , pero cuando me situo nuevamente en los dbedit me aparecen esos datos q trate de limpiar
alguien tiene una sugerencia??
gracias
Responder Con Cita
  #8  
Antiguo 27-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Hay que tener en cuenta que el DBEdit es simplemente un capturador de la informacion que contiene la tabla, como dice arriba Roman.
Podras limpiarlo las veces que quieras, pero siempre saldra el dato de lo contrario para que sirve?.
Cuando suceden cosas asi es mejor usar un simple edit, que se mantendra vacio mientras uno quiera y trabajara como un DBEdit, tambien cuando uno quiera.
Esa es mi humilde opinion, por lo menos es mas facil que lidiar con limpieza de componentes.
Saludos

Última edición por Caral fecha: 27-09-2006 a las 00:12:12. Razón: Areglar
Responder Con Cita
  #9  
Antiguo 27-09-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
ok gracias, use los dbedit para luego simplemente hacer un Ztable1.insert, pus con los edit deberia d ehacerlo manualmente para cada campo, estoy equivocada?
Responder Con Cita
  #10  
Antiguo 27-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Ade
Es algo asi:
En el from create Pones:
Código Delphi [-]
 Edit1.Clear;
Con esto el edit estara limpio al entrar
y
En el sitio donde grabas los datos
Código Delphi [-]
Ztable1.Open;
Edit1.Text:= DBEdit1.Text;
Ztable1.insert
Edit1.Text;
Ztable1.Post;
Saludos
Responder Con Cita
  #11  
Antiguo 27-09-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
hola caral, lo siento pero no te entendi , edit, dbedit o los dos??

soy novata con delphi y esta es mi 1º aplicacion.
de todas formas mencionarte q tengo un from en el cual tengo pestañas (ttabbednotebook), una para insertar,otra eliminar/modificar, otra listar y otra para salir.
en la de insertar tengo un groupbox (InsertarGroupBox) y en el los label (12)y dbedit(12) , un label (NumInsertado) para ir mostrando si se insertó o faltan datos y un boton insertar, y al pulsar este boton ya valido los campos y si son correctos inserto y se quedan los dbedit en blanco.
todo eso ok

pero veo la pantalla algo sosa y pense q si el usuario introducia datos y no deseaba insertar q??
pues un boton , ya fuera cancelar o limpiar, cuya funcionalidad fuera esa la de limpiar los dbedit.
pero no tengo ningun edit,pensaba q con ellos deberia de hacer:

Código Delphi [-]
ZTable.FieldByName('Codigo').AsString:=edit.text;
y asi para cada campo
gracias por tu ayuda
Responder Con Cita
  #12  
Antiguo 27-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Ade
En donde vas a insertar el registro pones:
Código Delphi [-]
if MessageBox(Handle, 
                PChar('Esta Seguro de que desea' + #13#10 + 
                      'Insertar El Nuevo Registro'), 
                PChar('Registros'),
                MB_OKCANCEL + MB_DEFBUTTON1 + MB_SYSTEMMODAL) = IDOK 
then
// Esto si no quiere insertar, osea Cancelar, limpia los DBEdit y da el foco al DBedit que necesites, yo puse DBEdit1 por poner algo, tu eliges
     DBEdit1.Clear;
     DBEdit1.SetFocus;
 begin
// Aqui pones la sentencia que usas para insertar en la tabla, Ejemplo
ZTable.Insert;
DBEdit1.Text;
DBEdit2.Text;
DBEdit3.Text; // Etc, Etc, Etc
ZTable.Post;
Espero te sirva
Saludos
Responder Con Cita
  #13  
Antiguo 27-09-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
gracias nuevamente Caral, no pense en mostrar la pantallita de confirmacion para insertar datos, pero para eliminar ya la tenia, pues pensé que si introduzco muchos registros seria un poco follonero, sobre tu codigo un pequeño error que debio colarse, lo modifique y lo pongo por si alguien lo necesita, y mencionarte que el DBEdit1.Clear me funciona, increible, cuando yo lo probe por mi cuenta no iba, haber si veo que puse mal,
ah por cierto:
#13 retorno de carro
pero #10 para que sirve?? tabulacion tal vez???

Código Delphi [-]
procedure TProveedores.Button1Click(Sender: TObject);
begin
if MessageBox(Handle,
                PChar('Esta Seguro de que desea' + #13#10 +
                      'Insertar El Nuevo Registro'),
                PChar('Registros'),
                MB_OKCANCEL + MB_DEFBUTTON1 + MB_SYSTEMMODAL) = IDCANCEL
then begin
// Esto si no quiere insertar, osea Cancelar, limpia los DBEdit
// y da el foco al DBedit que necesites, yo puse DBEdit1 por
//poner algo, tu eliges
     DBEdit1.Clear;
     DBEdit1.SetFocus;
     end
else
 begin
// Aqui pones la sentencia que usas para insertar en la tabla, Ejemplo
ZTable1.Insert;
ZTable1.Post;
end;
end;
muchas gracias
Responder Con Cita
  #14  
Antiguo 27-09-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
jeje no hice la prueba, ya hallé lo que me pasaba y me sigue pasando con clear, limpia los dbedit, pero cuando me situo sobre ellos para introducir de nuevo datos, me aparecen los datos introducidos justo antes de limpiar.
Responder Con Cita
  #15  
Antiguo 27-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Asi se soluciona el dedazo, poniendo delante del then:
Código Delphi [-]
if MessageBox(Handle, 
                PChar('Esta Seguro de que desea' + #13#10 + 
                      'Insertar El Nuevo Registro'), 
                PChar('Registros'),
                MB_OKCANCEL + MB_DEFBUTTON1 + MB_SYSTEMMODAL) = IDOK 
// Esto si no quiere insertar, osea Cancelar, limpia los DBEdit y da el foco al DBedit que necesites, yo puse DBEdit1 por poner algo, tu eliges
     DBEdit1.Clear;
     DBEdit1.SetFocus;
then
 begin
// Aqui pones la sentencia que usas para insertar en la tabla, Ejemplo
ZTable.Insert;
DBEdit1.Text;
DBEdit2.Text;
DBEdit3.Text; // Etc, Etc, Etc
ZTable.Post;
Tabular es el 9, el 10 no tengo idea, pero funciona y se ve bien.
Como esta Murcia
Saludos
Responder Con Cita
  #16  
Antiguo 27-09-2006
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
El #10 es avance de línea.

// Saludos
Responder Con Cita
  #17  
Antiguo 27-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Gracias Roman
Ade:
Intenta en eventos del DBedit en OnEnter, poner:
Código Delphi [-]
DBEdit1.Clear;
Cuando te posiciones en el dbedit este se limpiara, si no volver al edit.
Saludos
Responder Con Cita
  #18  
Antiguo 27-09-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
gracias a los dos, voy a probar eso
//saludos
Responder Con Cita
  #19  
Antiguo 27-09-2006
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
A ver. A riesgo de ser algo necio me parece que hay que recapitular las cosas.

Un DBEdit muestra los datos del registro activo en la tabla. Siempre.

Lo voy a repetir:

Un DBEdit muestra los datos del registro activo en la tabla. Siempre.

Si se hace un DBEdit.Clear, estaremos borrando los datos del campo asociado en el registro actual. ¿Es esto lo que se quiere? Yo creo que no.

Habría que empezar a preguntarse, ¿cómo es que esos DBEdit aparecen en blanco en primer lugar?

Porque se hace un ZTable.Insert.

ZTable.Insert no tiene por finalidad limpiar los campos; lo que hace es insertar un registro en blanco, cosa que suena parecida pero es muy distinta. Y al ser un registro en blanco, los DBEdits muestran datos en blanco, pero siguen siendo los datos del registro activo: el registro en blanco.

Dijiste al comienzo:

Cita:
Empezado por Ade
pero veo la pantalla algo sosa y pense q si el usuario introducia datos y no deseaba insertar q??
pues un boton , ya fuera cancelar o limpiar, cuya funcionalidad fuera esa la de limpiar los dbedit.
pero no tengo ningun edit,pensaba q con ellos deberia de hacer:
Si el usuario desea ya no introducir datos entonces tienes que cancelar la operación, y eso se hace con ZTable1.Cancel.

Puedes ciertamente limpiar los DBEdit, pero sigues teniendo un registro extra.

Ahora, si el punto es meramente ornamental

Cita:
Empezado por Ade
veo la pantalla algo sosa
entonces, como dice Caral, usa Edits normales en lugar de DBEdits. Pero ten en cuenta que entonces la dinámica cambia. Cuando desees guardar los datos haces el Insert y pasas el contenido de los Edits directamente a los campos:

Código Delphi [-]
{ Guardar datos }
ZTable.Insert;
ZTable.FieldByName('campo1').AsString := Edit1.Text;
ZTable.FieldByName('campo2').AsString := Edit2.Text;

...

ZTable.Post;

Y así puedes poner en blanco los Edits cuando quieras.

// Saludos

Última edición por roman fecha: 27-09-2006 a las 22:21:35.
Responder Con Cita
  #20  
Antiguo 27-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Bueno Ade
Con esta explicacion de Roman, 1000 veces mejor que la mia, creo que te tendra que quedar clarisimo.
Gracias Roman por tu ayuda, creo que se me estaba escapando de las manos
Saludos
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 22:55:29.


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