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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-09-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Conectar a un DataSet de otro form.

¡¡Saludos!!:

Estoy haciendo un programilla de bases de datos, en especial para una biblioteca. Tengo un form para "asignar" un libro a una persona, que es cuando lo coge prestado. El caso es que quiero que en ese form se me muestre, en un DBComboBox, todos los libros disponibles (La columna Título de la tabla TblLibros, que tiene como dataset dsLibros).

Bien, cómo no podía poner el Dataset directamente desde el form para coger libros aún añadiendo las uses, he puesto el siguiente código cuando lo llamo

Código Delphi [-]
procedure TfrmUsuarios.sbCogerLibroClick(Sender: TObject);
begin
  If eNombre.Text = '' Then
  begin
    ShowMessage('Debe de seleccionar un miembro al que añadir el libro');
    Abort;
  end
  Else
  begin
    frmCogerLibro := TfrmCogerLibro.Create(Self);
    frmCogerLibro.eLibro.DataSource := frmPrincipal.frmLibros1.dsLibros;
    frmCogerLibro.eLibro.DataField := 'Titulo';
    frmCogerLibro.ShowModal;
    frmCogerLibro.Free;
  end;
end;

Sin embargo, tampoco me funciona. ¿Cómo podría hacer lo que me propongo?.


Gracias, simplemente, por aguantarme
__________________
:)
Responder Con Cita
  #2  
Antiguo 09-09-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
begin
DbEdit1.DataSource:=Form1.DataSource1;
DbEdit1.DataField:='Addr1';
end;

Mira a ver esta línea me parece que no es correcta:
frmCogerLibro.eLibro.DataSource := frmPrincipal.frmLibros1.dsLibros;

Si el Dataset esta en frmPrincipal, sobraría la alusión a libros.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 09-09-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Lo siento marcos, pero no comprendo lo que me quieres decir, y eso que lo has dicho lo más simple del mundo entero.

Aclaro más la situación, por si las moscas: El botón para llamar al nuevo form (para "asignar" un libro) está en un frame incrustado en el form principal.
__________________
:)
Responder Con Cita
  #4  
Antiguo 09-09-2004
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 DarkByte
Lo siento marcos, pero no comprendo lo que me quieres decir, y eso que lo has dicho lo más simple del mundo entero.
O sea, la pregunta es, ¿siquiera te compila el código?

Es que guiándonos por la nomeclatura de tus objetos, la línea a la que Marcos hace referencia:


Código Delphi [-]
frmCogerLibro.eLibro.DataSource := frmPrincipal.frmLibros1.dsLibros;
no tiene sentido a menos que el formulario frmLibros esté contenido en el formulario frmPrincipal, cosa posible pero poco probable.

// Saludos
Responder Con Cita
  #5  
Antiguo 09-09-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Es que es así frmLibros está dentro de frmPrincipal, para llamarlo desde el form principal, pues si no me abofetea con un:

Código:
[Error] uUsuarios.pas(90): Undeclared identifier: 'frmLibros'
Responder Con Cita
  #6  
Antiguo 09-09-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Cita:
Empezado por DarkByte
Es que es así frmLibros está dentro de frmPrincipal, para llamarlo desde el form principal....
Cuando dices "dentro" te refieres a que el Parent es frmPrincipal??

Porque, a ver, se puede hacer, pero.......... como dice Román no es muy normal hacerlo (para eso están los frames y otros contenedores)
Responder Con Cita
  #7  
Antiguo 09-09-2004
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
Volvamos al inicio

Cita:
Empezado por DarkByte
Bien, cómo no podía poner el Dataset directamente desde el form para coger libros aún añadiendo las uses, he puesto el siguiente código cuando lo llamo
¿Cómo está esto? Un DataSource puedes enlazarlo a cualquier DataSet del proyecto. Eso sí, para hacerlo durante el diseño es necesario tener abierto el formulario que contiene al DataSet.

// Saludos
Responder Con Cita
  #8  
Antiguo 09-09-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
El dataset está en un frame, el frame está "incrustado" en el form principal.
Responder Con Cita
  #9  
Antiguo 09-09-2004
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 DarkByte
El dataset está en un frame
¿Y por qué no dijiste esto desde el principio? Sabíamos que el botón estaba en el frame pero no el dataset.

Ya he probado con una estructura similar a la que tienes y funciona bien (que conste que hasta ahora no has dicho qué es lo que no funciona bien). Lo único que se me ocurre es que no tengas enlazado el DataSource al DataSet o bien que en diseño estés activando el DataSet incorrecto, es decir el del Frame externo y no el del incrustado en el formulario.

// Saludos

pd: ¿Para qué pones los DataSource y DataSets en un frame?
Responder Con Cita
  #10  
Antiguo 09-09-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Pues lo que no me funciona bien es que me aparece el DBComboBox vacío .

Y los pongo en un frame porqué pense que al agregarlos sería como si fuese contenido del form.. pero me equivoqué.
Responder Con Cita
  #11  
Antiguo 09-09-2004
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
Pues ya te dije, debe funcionar así.

Asegurate de que en el frame incrustado el DataSety el DataSource sigan enlazados. Si en algún momento los desconectaste en la ejecución seguirán desconectados aun cuando en el frame externo sigan conectados.

De cualquier forma sí creo que hay algo un poco errado en el diseño. A menos que el dataset lo utilices solo en un lugar, por lo general será más práctico que coloques tus dataset en un data module y los datasource junto con los controles dbaware.

// Saludos
Responder Con Cita
  #12  
Antiguo 10-09-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
mmm.¿Estoy a tiempo de moverlo todo a un datamodule? . Otra cosa... datamodule no era de BDE?
Responder Con Cita
  #13  
Antiguo 10-09-2004
Avatar de weke
weke weke is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia
Posts: 170
Poder: 20
weke Va por buen camino
¿Qué base de datos utilizas? Yo estoy utilizando el DataModule con una base de datos mysql. No creo que haya ningún problema.
Saludos.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
Responder Con Cita
  #14  
Antiguo 10-09-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Puedes utilizar los datamodulos con cualquier base de datos, yo los utilizo con Access, Firebird, Paradox......


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #15  
Antiguo 10-09-2004
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
Pues sí. Un DataModule prácticamente no difiere de una unidad plana excepto por proporcionar una superficie para poner componenes no visuales durante el diseño.

// Saludos
Responder Con Cita
  #16  
Antiguo 10-09-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Tema solucionado: Colé ya el datamodule y cambié toda la aplicación con éxito .

Muchísimas gracias a todos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 23:32:45.


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