Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2010
Avatar de Chuma87
Chuma87 Chuma87 is offline
Miembro
 
Registrado: sep 2010
Posts: 24
Poder: 0
Chuma87 Va por buen camino
Dataset a formX.editX

cuando abrimos el form padre, vamos a "facturas", se abre "facturas" y le damos a un boton para q se nos habra otro formulario (ej: "cliente", en donde seleccionamos al cliente, en caso de serlo), cuando queremos pasar los datos del cliente, a unos edits del formulario "factura" (EJ: formFACTURA.edit1.text := adodataset.fieldsvalues ['Nombre']) nos salta un error de sistema, al momento de que esto sucede, se posiciona sobre la linea de la unidad del formulario "cliente", marcandonos que AHI esta el error, supuestamente es el adodataset, porque le ponemos // (como comentario) y funciona. Nosotros abrimos, en otro delphi, factura solo (o sea, el proyecto Factura que teniamos) lo corremos, y anda todo bien sin andar comentando...

Mi hipotesis sobre la falla? Querer abrir mas de 2 formularios al mismo tiempo -> FormPADRE/FormHijo/Form (ej: FormMDI/FormFACTURA/FormCLIENTE)

Código Delphi [-]
procedure TClientes.DBGrid1DblClick(Sender: TObject);
begin
  Ads.Close;
  Ads.CommandType:= cmdtext;
  Ads.CommandText := 'select * from CLIENTES';
  Ads.Open;
  Factura.Edit8.Text := Ads.FieldValues['CUIT'];
  //Factura.Edit7.Text := Ads.FieldValues['Razon_Social'];
  //Factura.Edit6.Text := Ads.FieldValues['Telefono'];
  Application.MessageBox('Carga Exitosa','Mensaje');
end;

Ads = dataset.
Responder Con Cita
  #2  
Antiguo 28-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

¿ Podés transcribir el error que te arroja ?

Saludos.
Responder Con Cita
  #3  
Antiguo 28-09-2010
Avatar de Chuma87
Chuma87 Chuma87 is offline
Miembro
 
Registrado: sep 2010
Posts: 24
Poder: 0
Chuma87 Va por buen camino
Proyect PR_XXXX.exe raised exception class EAccessViolation with message "Access violation at address 004D27DA in module 'PR_XXXX.exe'. Read of address 00000334". Process stopped. Use step or run to continue.

ese es el error
Responder Con Cita
  #4  
Antiguo 29-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Chuma87 Ver Mensaje
Proyect PR_XXXX.exe raised exception class EAccessViolation with message "Access violation at address 004D27DA in module 'PR_XXXX.exe'. Read of address 00000334". Process stopped. Use step or run to continue.

ese es el error
Por el tipo de error, dá la impresión que aún no esta creado el form 'Factura' o los Edit's, cuando invocas a Edit6 y Edit7. No hay problema en abrir más de un form aunque este último sea un MDIChild.

De todos modos revisá que la creación del mismo suceda antes de citar a Edit6 y Edit7 y si estos los creas en ejecución, revisá también que estén creados antes de llamarlos.

Sería bueno si pones el código donde creas el form 'Factura'.


Saludos.

Última edición por ecfisa fecha: 29-09-2010 a las 00:55:53.
Responder Con Cita
  #5  
Antiguo 06-10-2010
Avatar de Chuma87
Chuma87 Chuma87 is offline
Miembro
 
Registrado: sep 2010
Posts: 24
Poder: 0
Chuma87 Va por buen camino
Código Delphi [-]
procedure TFPadre.Factura1Click(Sender: TObject);
var
  Factura : TFactura;

begin
  Factura := TFactura.Create(Application);
  FPadre.Factura1.Enabled := false;  
end;

Con una variable global funciona, pero el tema es que, quede bien y lo pase en el momento a los edits, cuando hago doble click sobre "Clientes"

Cuando me salta el error, y se pociciona sobre Factura.edit8.text....... pongo el cursor encima de Factura y me pone... Factura = nil

Última edición por Chuma87 fecha: 06-10-2010 a las 03:14:46.
Responder Con Cita
  #6  
Antiguo 06-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Chuma87.

Según entiendo, tenés un MDIForm (padre) que llama a un MDIChild 'facturas' y este a su vez llama
a un fsNormal 'clientes'. Y la idea es ante determinada situación en el form 'clientes' enviarle datos a
componentes del form 'facturas',despues me dirás si me equivoco...

Como el problema no está en el llamado del MDIForm al MDIChild, supongamos que ya estamos con el form 'facturas'
abierto.

Voy a ponerte un ejemplo muy simplificado omitiendo toda comprobación, sólo a fín de clarificar la situación.

Tenemos en 'facturas' un TPanel o (cualquier componente receptor) y un botón llamado btCliente que ejecuta la
creación del form 'cliente', algo como:
Código Delphi [-]
uses Unit3
procedure TFactura.btClientesClick(Sender: TObject);
begin
  Clientes:= TCliente.Create(Application);
  Clientes.ShowModal;
end;

En el form 'clientes' ponemos un Edit y otro botón llamado btPasar.
Y para simplificar más la cosa, hacemos una referencia circular a el form 'facturas', algo como:
Código Delphi [-]
uses Unit2;

procedure TClientes.PasarClick(Sender: TObject);
begin
  Factura.Panel1.Caption:= Edit1.Text
end;
Esto, basándome en lo que interpreté en tu primer post. De no haber entendido mal, funciona sin provocar excepciones.

Ahora si el form 'factura' está declarado como variable local de un procedimiento como en el código que adjuntas, realmente
no sé como el form 'cliente' se va a enterar de su existencia...

Saludos.
Responder Con Cita
  #7  
Antiguo 06-10-2010
Avatar de Chuma87
Chuma87 Chuma87 is offline
Miembro
 
Registrado: sep 2010
Posts: 24
Poder: 0
Chuma87 Va por buen camino
O sea, lo que decis es que, cuando selecciono con doble click al cliente en "Clientes" guarde los datos en edits de ese Form y no de los de "facturas". De esos edits los paso a otros edits, de factura, asi es como decis? si no me equivoco..

Voy a intentar.
Responder Con Cita
  #8  
Antiguo 06-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

No, no digo eso.

Lo que digo es que el form 'cliente' debe poder ver (o tener acceso) al form 'factura' si es que quiere alterar el valor de un componente declarado en él.

Saludos.

Última edición por ecfisa fecha: 06-10-2010 a las 15:48:45.
Responder Con Cita
  #9  
Antiguo 06-10-2010
Avatar de Chuma87
Chuma87 Chuma87 is offline
Miembro
 
Registrado: sep 2010
Posts: 24
Poder: 0
Chuma87 Va por buen camino
Corrijo:
Padre(MDIForm)/Factura(MDIChild)/Clientes(MDIChild)

En todo caso, siempre los errores me los marca sobre "facturas"...creo que ahi esta el problema, sera porq una vez que abro clientes, lo descarta?

Tengo otro proyecto, solo que esta "factura" que llama a "clientes", igual que aca, pero sin el FORMPADRE, y anda fenomenal!.
Responder Con Cita
  #10  
Antiguo 06-10-2010
Avatar de Chuma87
Chuma87 Chuma87 is offline
Miembro
 
Registrado: sep 2010
Posts: 24
Poder: 0
Chuma87 Va por buen camino
Ya esta!

es asi: Estando en la unidad del Form de Clientes, en el evento dobleclick, este es el codigo:

Código Delphi [-]
procedure TClientes.DBGrid1DblClick(Sender: TObject);
begin
  Factura := TFactura.Create(Application);
  Factura.Edit8.Text := Ads.FieldValues['CUIT'];
  Factura.Edit7.Text := Ads.FieldValues['Razon_Social'];
  Factura.Edit6.Text := Ads.FieldValues['Telefono'];
  Application.MessageBox('Carga Exitosa','Mensaje');
end;

Nunca volvia al formulario FACTURA. debia crearlo de nuevo.

Gracias!
Responder Con Cita
  #11  
Antiguo 06-10-2010
Avatar de Chuma87
Chuma87 Chuma87 is offline
Miembro
 
Registrado: sep 2010
Posts: 24
Poder: 0
Chuma87 Va por buen camino
VAAA...en realidad, lo que hace es crearme otra vez el formulario factura, entonces cuando hago la transaccion, me aparecen ahora 2 "Facturas"...

no logro comprender cual es realmente el error.

Porque lo que veo es que "factura" no esta activado o no lo reconoce. no se.

Ahora, si pongo
Código Delphi [-]
Factura.Show;
  Factura.Edit8.Text := Ads.FieldValues['CUIT'];
  Factura.Edit7.Text := Ads.FieldValues['Razon_Social'];
  Factura.Edit6.Text := Ads.FieldValues['Telefono'];
  Application.MessageBox('Carga Exitosa','Mensaje');

me salta este error.
Proyect Pr_PrincipalMDI.exe raised exception class EAccess Violation with message 'Access violation at address 0046E9F2 in module 'Pr_PrincipalMDI.exe'. Read of address 000002F4'. Process stopped. Use Step or Run to continue.

Última edición por Chuma87 fecha: 06-10-2010 a las 17:21:01.
Responder Con Cita
  #12  
Antiguo 06-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Para evitar que te cree dos veces el mismo MDIChild, podés usar esta función en el MDIForm:
Código Delphi [-]
procedure TMDIForm.CrearChild(ClassForm: TFormClass);
var
  i: Integer;
begin
  for i:= 0 to MDIChildCount do  // Buscar si está creada
   if Screen.Forms[i].ClassName = ClassForm.ClassName then // ¿ Ya existe ?
   begin
     Screen.Forms[i].WindowState:= wsNormal;  // restaurar
     Screen.Forms[i].BringToFront;            // Traer al frente
     Exit;                                    // Salir;
   end;
  with ClassForm.Create(nil) do Show; // No existe, crearlo
end;

Ejemplo de llamada:
Código Delphi [-]
     CrearChild(TClientes);

Para que el MDIChild se cierre y no se minimize incluí en el evento OnClose del mismo:
Código Delphi [-]
procedure TClientes.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action:= caFree;
end;


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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Copiar el contenido de un DataSet a otro DataSet Javi2 Varios 82 22-11-2022 09:26:16
Actualizar un dataset desde otro dataset jafera Conexión con bases de datos 17 18-12-2008 23:57:10
Dataset JerS Conexión con bases de datos 2 16-06-2008 22:58:44
dataset Netyco SQL 2 15-10-2007 11:57:26
Closed dataset srobles Conexión con bases de datos 3 14-03-2005 21:10:24


La franja horaria es GMT +2. Ahora son las 01:46:49.


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