Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Duda en Base de Datos (https://www.clubdelphi.com/foros/showthread.php?t=66191)

Franksxs 05-02-2010 20:29:20

Duda en Base de Datos
 
Hola....

Tengo Una Duda.

TEngo un Form que tiene algunos dbedit (nombre, domicilio, ciudad, atn y rfc), tengo la respectiva tabla que los conecta y un edit aparta que lo tengo denominado "Clave", ahora bien, lo que quiero hacer es que el usuario pueda teclear un numero de registro de la tabla por ejemplo:

digamos que tengo estos clientes dados de alta en la tabla

Nombre____|Ciudad_|______Domicilio______|___AT'N_____|____RFC
Juan Perez | Colima | Fraccionamiento verde| Julio Miranda | JPRF2345678
Lola Días | DF | Calle naranjo | Pablo Días | LDRT456435

Ahora bien digamos que Juan Perez es mi Registro 1 y Lola mi registro 2...

Entonces quiero que al momento de ingresar en mi Edit "Clave" alguno de los registros por ejemplo "2" que automaticamente se ponga la info necesaria en cada dbedit.

Mi dudas... ¿Tengo que agregar un campo para la clave o registro para los clientes? y si es así, existe alguna forma de que este numero/clave se asigne automaticamente al momento de dar de alta un cliente

¿Como hago para que al teclear numero de clave en el edit, se pase la info a los dbeditcorrespondiente?


Muchas Gracias por su tiempo.

rgstuamigo 05-02-2010 21:15:24

Segun entiendo... tu problema es en realidad buscar un determinado registro y posicionar el registro buscado y selecionarlo;
Si es así entonces pon este código en el evento OnChange del Edit donde introduces el numero a posicionar;):
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
var Nro_de_Fila:Integer;
begin
{Estoy usando la funcion TryStrToInt por que puede ser que en tu edit pongas algo que no sea numero}
 if TryStrToInt(Edit1.Text,Nro_de_Fila) then //si tiene exito la conversion
   DataSet.RecNo:=Nro_de_Fila;//ubico el dataset (Query o Table) en el registro deseado
end;
Saludos...:)

Franksxs 06-02-2010 21:09:41

Muchas Gracias por la ayuda rgstuamigo, Fijate que si quiero encontrar un determinado registro, pero ahora el problema es que quiero que una vez encontrado el registro los datos de ese registro como (nombre, domicilio, ciudad) me agregue automaticamente cada uno de los campos en cada uno de los dbedit(dbedit1,dbedit2,dbedit3) que tengo en la form.

Tengo estos datos de campos NOMBRE, DOMICILO, CIUDAD etc, etc.

Ahora bien en mi Form tengo un Edit (edit6) que es donde el usuario podra poner la clave de cliente o registro de cliente, Entonces quiero que al momento de poner un numero, que seria un numero de registro, busque el numero de registro y que cada info de cada campo (nombre, domicilio, ciudad, etc) se ponga en los dbedit(dbedit1, dbedit2, dbedit3) correspondientes.

Muchas Grx por la atención.

DriverOp 06-02-2010 21:20:03

Cada DBEdit debe tener asignada la propiedad DataField con el nombre del campo que le corresponde según el DataSet que tenga asignado (si es que tiene uno). No necesitas hacer más que eso.

Franksxs 06-02-2010 22:47:54

Cita:

Empezado por DriverOp (Mensaje 353226)
Cada DBEdit debe tener asignada la propiedad DataField con el nombre del campo que le corresponde según el DataSet que tenga asignado (si es que tiene uno). No necesitas hacer más que eso.

Gracias DriverOp por tu ayuda

fijate que esa forma si la conozco, pero lo que quiero es que la info de los registros sean puestos en los dbedit pero de acuerdo al numero de registro que solicite mediante el edit que tengo asignado para buscar registro.


por cierto hasta cuando o que tengo que hacer para poder poner imagenes y links en mis post? eso lo facilitaria mucho.

DriverOp 06-02-2010 22:53:03

Cita:

Empezado por Franksxs (Mensaje 353229)
fijate que esa forma si la conozco, pero lo que quiero es que la info de los registros sean puestos en los dbedit pero de acuerdo al numero de registro que solicite mediante el edit que tengo asignado para buscar registro.

Quizá no fui suficientemente claro. Esa funcionalidad es propia de los TDBEdits. Estableciendo las propiedades correctamente, cada vez que cambia el registro activo en el TDataSet, los TDBEdits toman el valor del campo que les corresponde. No tienes que escribir ningún código para que esto suceda.

De hecho, ese es el mismísimo propósito de la existencia de este tipo de componentes.

Saludos.

Franksxs 06-02-2010 23:11:26

Cita:

Empezado por DriverOp (Mensaje 353230)
Quizá no fui suficientemente claro. Esa funcionalidad es propia de los TDBEdits. Estableciendo las propiedades correctamente, cada vez que cambia el registro activo en el TDataSet, los TDBEdits toman el valor del campo que les corresponde. No tienes que escribir ningún código para que esto suceda.

De hecho, ese es el mismísimo propósito de la existencia de este tipo de componentes.

Saludos.


Gracias de nuevo DriverOp.

Entonces es correcto si utilizo el codigo que rgstuamigo me proporcionó?
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
var Nro_de_Fila:Integer;
begin
{Estoy usando la funcion TryStrToInt por que puede ser que en tu edit pongas algo que no sea numero}
 if TryStrToInt(Edit1.Text,Nro_de_Fila) then //si tiene exito la conversion
   table1.RecNo:=Nro_de_Fila;//ubico el dataset (Query o Table) en el registro deseado
end;


Porque mira he utilizado el codigo, ya les asigne los datafield con el campo a los dbedit y aún así no me va, los dbedit solo me muestra los datos que estan en el primer registro, aún cuando quiero que me muestre los datos del registro 2.

Gracias por tu tiempo. Saludos

DriverOp 06-02-2010 23:28:14

Cita:

Empezado por Franksxs (Mensaje 353232)
Porque mira he utilizado el codigo, ya les asigne los datafield con el campo a los dbedit y aún así no me va, los dbedit solo me muestra los datos que estan en el primer registro, aún cuando quiero que me muestre los datos del registro 2.

Pues algo estás haciendo mal, evidentemente.

Asumo que tienes lo siguiente:
Un TTable que apunta a una tabla (en tu caso se llama Table1).
Un TDataSource que en su propiedad DataSet apunta al TTable.
Y varios TDBEdits cuya propiedad DataSource apunta al TDataSource y la propiedad DataField al nombre de campo que debe mostrar/editar ese TDBEdit.

Todo esto usando el BDE por supuesto.

Entonces cada vez que asignes un valor a Table1.RecNo, estás cambiando el registro activo de la tabla y por lo tanto el valor del campo apuntado por los TDBEdits también cambiará.

Acabo de probar el código de rgstuamigo y funciona perfectamente.

Franksxs 06-02-2010 23:46:24

Cita:

Empezado por DriverOp (Mensaje 353234)
Pues algo estás haciendo mal, evidentemente.

Asumo que tienes lo siguiente:
Un TTable que apunta a una tabla (en tu caso se llama Table1).
Un TDataSource que en su propiedad DataSet apunta al TTable.
Y varios TDBEdits cuya propiedad DataSource apunta al TDataSource y la propiedad DataField al nombre de campo que debe mostrar/editar ese TDBEdit.

Todo esto usando el BDE por supuesto.

Entonces cada vez que asignes un valor a Table1.RecNo, estás cambiando el registro activo de la tabla y por lo tanto el valor del campo apuntado por los TDBEdits también cambiará.

Acabo de probar el código de rgstuamigo y funciona perfectamente.




Efectivamente Estoy haciendo algo mal y no sé que es, fijate que cambie mi tablename por uno de los que viene por defecto en delphi y con ese si me funciona, tienes alguna idea porque con esa si funciona y con la mia, no ?


Muchas Gracias, disculpen tanto las molestia su ayuda meha servido bastante

DriverOp 06-02-2010 23:53:37

Cita:

Empezado por Franksxs (Mensaje 353235)
Efectivamente Estoy haciendo algo mal y no sé que es, fijate que cambie mi tablename por uno de los que viene por defecto en delphi y con ese si me funciona, tienes alguna idea porque con esa si funciona y con la mia, no ?


Muchas Gracias, disculpen tanto las molestia su ayuda meha servido bastante

Lo ignoro. Quizá tenga que ver el tipo de tabla que estás usando, no lo sé, no tengo mucha experiencia con base de datos en Delphi.

Franksxs 07-02-2010 00:03:27

Cita:

Empezado por DriverOp (Mensaje 353237)
Lo ignoro. Quizá tenga que ver el tipo de tabla que estás usando, no lo sé, no tengo mucha experiencia con base de datos en Delphi.


Es lo mismo que estaba sospechando, donde aprendí nos enseñaron con dbase III+, con que tipo de tabla trabajas tu ?

Saludos

DriverOp 08-02-2010 07:18:35

Cita:

Empezado por Franksxs (Mensaje 353239)
Es lo mismo que estaba sospechando, donde aprendí nos enseñaron con dbase III+, con que tipo de tabla trabajas tu ?

Saludos

Paradox 7. Son las "estandar" de Delphi 6.0 (sé que es viejo pero es el único que tengo :rolleyes: )

Franksxs 08-02-2010 19:23:32

Cita:

Empezado por DriverOp (Mensaje 353324)
Paradox 7. Son las "estandar" de Delphi 6.0 (sé que es viejo pero es el único que tengo :rolleyes: )


muy bien, por ultimo quiere darle las gracias por todo su apoyo


La franja horaria es GMT +2. Ahora son las 05:25:03.

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