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)
-   -   Problema con Access (https://www.clubdelphi.com/foros/showthread.php?t=49147)

loquillo3 14-10-2007 19:28:19

Problema con Access
 
mi problema es el siguiente:
Estoy utilizando Acces como mi base de datos, cree varias tablas y relacione dos de ellas, resulta que le introduzco datos directamente desde access todo esta bien, ahora mi pregunta es la siguiente:

Que tengo que hacer para que cuando intente introducir datos desde mi aplicacion lo haga igual que en access?

Caral 14-10-2007 20:00:13

Hola
Bienvenido al club, seria bueno que leas la guia de estilo y esta
Con relacion a tu pregunta.
Hay muchas maneras de introducir datos en una tabla en Access, se puede hacer usando un componente ADoTable o AdoQuery con una sentenciq sql.
Seria muy bueno que nos dijeras que es lo que planeas hacer, asi podriamos ayudarte mas.
Te puedo remitir también al Wiki del club, en este encontraras varios ejemplos.
No dudes en preguntar si no entiendes algo.
Saludos

loquillo3 14-10-2007 23:43:44

Gracias por responderme tan rapido.

Ya he trabajado con AdoTable y AdoQuery, mi pregunta se referia a que tengo las tablas relacionadas y necesito introducir los datos en ambas tablas ejemplo yo utilizo un AdoTAble para cada tabla pero cuando quiero hacer la consulta no me da el resultado de la misma persona.

Pd: Estoy trabajando en un proyecto de universidad, se trata de crear un programa para una agencia de prestamos.

Caral 15-10-2007 00:55:47

Hola
Perdona pero no entiendo, si sabes usar adoquery y las sentencias sql, por que grabas los datos con adotable?, me queda esa duda.
Ahora, por que no salen los datos, de que persona?, en donde?.
Muy dificil adivinar.
Danos mas informacion o pon algo de codigo, para tratar de entender.
Saludos

loquillo3 15-10-2007 02:02:18

El problema es:

Resulta que quiero introducirles datos a las dos tablas, las tablas estan relacionadas, cuando intento introducirles los datos lo hace muy bien, pero necesito que cuando yo acceda a una de las tablas me aparesca los registro de la otra tabla.

por ejemplo:

Una de las tablas se llama cliente y la otra garante, yo las relacione por medio de la clave primaria que en este caso es CodCliente.

Me preguntaste porque utlizo el AdoTable para introducirle Datos a las tablas, pues bien es la unica forma que conozco.

Caral 15-10-2007 02:58:44

Hola
Access lo hace muy facil.
Haces una consulta en access, ves en la consulta la sentencia sql que genero, esta la copias y la pegas al string de un adoquery y este lo enlazas a donde quieras ver el resultado, puede ser un dbgrid, por medio de un datasource y ya.
Con esto veras lo que necesitas, supongo se entiende, es muy sencillo.
Saludos

loquillo3 15-10-2007 05:31:18

Parece que yo no me explicado bien, el problema no es la consulta, sino cuando introduzco los datos desde mi aplicacion lo guarda pero no me relaciona los datos de la Tabla1 con los de la Tabla2.

Gracias por intentar ayudarme, no son todas las personas que sacn un momento para ayudar a otro.

Caral 15-10-2007 17:23:58

Hola
La verdad sigo sin entender lo que le sucede al programa.
Si quieres coloca el programa con la base de datos aqui, no creo que sea muy grande, lo reviso y vemos a ver que pasa.
Otra es que coloques codigo, sin el es muy dificil.
Saludos

loquillo3 16-10-2007 02:04:26

Hola,
Tratare de explicarme mejor.

Tengo mis tablas hechas y las tengos relacionadas, resulta que quiero introducirle datos desde la aplicacion. Pero como estan relacionadas no se como introducirles los datos para cuando haga una consulta me aparezcan los datos.

Ej., Que si modifico los datos de la tabla1 se modifiquen tambien los datos de la tabla2.

No se si me he explicado bien o fue que formule mal la pregunta.

enecumene 16-10-2007 02:39:27

Hola Loquillo3, para eso puedes usar sentencias sql, yo utilizo dos query, uno para cada tabla y como tienen un campo en comun es mucho mas facil:

Código SQL [-]
Update tabla1 set campo='valor' where campo='condicion';

Código Delphi [-]
procedure Tincio.BitBtn1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Update tabla1 set CodCliente='valor' where campo='condicion'');
Query1.ExecSql;
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('Update tabla2 set campo='valor' where CodCliente='condicion'');
Query2.ExecSql;
end;

es solo una idea que puedes utilizar, se que hay otras maneras pero la desconozco, algun maestro del club te dara otra opcion, si quieres puedes ir utilizando este ejemplo, espero que te funciones

Saludos

loquillo3 16-10-2007 03:48:17

Hola,

enecumene tu codigo me funciono.

Miren cual es el error que me lanza cuando intento introducir datos:

Project Project.exe raised Exception class EDataBaseError With ' No
se puede encontrar la fila para su actualizacion: Algunos valores han
cambiado desde la utima vez que se leyó. Process stopped.

Intente Adjuntar el programa para que lo revisaran pero me dice que excede el maximo.

enecumene 16-10-2007 04:01:34

Cita:

Project Project.exe raised Exception class EDataBaseError With ' No
se puede encontrar la fila para su actualizacion: Algunos valores han
cambiado desde la utima vez que se leyó. Process stopped.
Hola, Loquillo3, mira al parecer que estas insertando en un campo que no existe o que ya se modifico, revisa la consulta que debe haber algo malo o si quieres publica la parte del codigo donde te da error.

Saludos.

douglas 16-10-2007 18:17:58

buenas chicos, se cual parece ser el problema de loquillo, el esta relacionando sus tablas de access por medio de los codclient, y dogerente, me imagino, el caso es que yo tengo el mismo problema, la situacion esta, en que al momento de jalar los fields de la base de datos los jala bien y funcionan y almacenan, el probleme esta en que no copia el codgerente, no se si me explico bien, quise atacar este problema queriendo jalar el id que se va a utilizar y copiarlo a db label para que quede almacenado, pero la verdad no funciono, cual creen ustedes que puede ser la mejor solucion, repito es el problema que yo tengo y estoy casi seguro, que ese es el problema que loquillo 3 tiene

loquillo3 20-10-2007 01:09:24

Aqui les dejo los un ejemplo de lo que quiero hacer

Trate de Adjuntarlo pero no pude porque era mas grande pero aki se los dejo.
Link Actualizado
http://rapidshare.com/files/65217870/Clup_delphi.zip

douglas 23-10-2007 07:22:08

hey loquillo, la bse de datos que me enviaste no funciona, mmm seriaq bueno que me lo vuelvas a enviar, el zip que me enviaste no es muy grande puedes enviarmelo a mi correo, tecni_serv.net@hotmail.com o al dough_punkinlove@hotmail.com

loquillo3 26-10-2007 04:30:17

Lo subi en RapidShared, prueben con este link, si en dado caso no funciona me avisan.

Link Actualizado:

http://rapidshare.com/files/65217870/Clup_delphi.zip

douglas 28-10-2007 18:42:03

LO SIENTO MANITO SOLAMENTE ME SALE INFORMACION SOBRE FICHEROS, DE VERDAD TE LO DIGO, SI NECESITAS ENVIAR TU PROGRAMA PARA QUE TE LO REVISE, SOLAMENTE MANDAMELO A MI COREO, PERO PERCATATE QUE NO PASE DE 10 MEGAS, tecni_serv.net@hotmail.com dough_punkinlove@hotmail.com

loquillo3 29-10-2007 00:40:13

Hola,
Ya resolvi el problema. No se si es el problema estaba en una opcion de access donde te pide " Exigir Integridad Referencial" no se eso era lo que me daba el problema pero despues de que le quite esa opcion el programa funciona hasta el momento.

Tengo una duda: No habra una opcion donde utilise un login y al introducir mal la contraseña o el nombre de usuario 3 o mas vece se cierre la aplicacion.

Gracias a todos por la atencion. :)

douglas 29-10-2007 04:11:25

bueno no tengo delphi a la mano pero creo que podes hacer algo asi, probalo y siempre escribis por aca:
Código Delphi [-]
function clave;
var
clave:string
a:integer;
begin
       a:=0;
       clave:='escribes aqui la clave';
       if dbedit1.text = clave then 
       begin
              form2.show; 
       end
       else
       begin
               a:=a+1;
               while a=3 do 
               begin 
                      showmwssagw('LO SENTIMOS EL PROGRAMA SE CERRARA');
                      form1.close;
               end;
       end;
end;

douglas 29-10-2007 04:14:30

bueno mano espero que te sirva, siempre mandas la solucion que des, porque acordate que el foro es para ayuda de todos, ademas siempre es bueno que hagas hilos distintos para temas distintos, pero bueno siempre es recomendable que leas la guia de estilo, cualquier cosa ya sabes manito, aqui estamos siempre que se pueda darte ayuda, pero igual hay muchas mas personas que te pueden ayudar, te repito, espero qude te sirva.


La franja horaria es GMT +2. Ahora son las 16:25:27.

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