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 28-09-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Cool Instanciar datamodule

Hola a todos.
Miren tengo esta unidad donde intento instanciar un datamodule que contiene un Ttable + Provider + Cliendataset todo parece ir bien hasta que intento modificar los datos de cliente, es como si no lo instanciara pero desde el form si veo todos los componentes del datamodule.
En la parte de abajo del código resalto donde da error.
Sabéis que puede ocurrir?
Gracias , un saludo para todos.
Código Delphi [-]
unit entrada;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, unit1,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, RzButton, Vcl.StdCtrls,
  RzLabel, Vcl.Mask, RzEdit, FireDAC.Stan.Intf, FireDAC.Stan.Option,
  FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf,
  FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, Data.DB,
  FireDAC.Comp.DataSet, FireDAC.Comp.Client;

type
  TForm3 = class(TForm)
    RzToolbarButton2: TRzToolbarButton;
    RzToolbarButton1: TRzToolbarButton;
    edit1: TRzEdit;
    RzLabel1: TRzLabel;
    edit2: TRzEdit;
    RzLabel2: TRzLabel;
    procedure RzToolbarButton2Click(Sender: TObject);
    procedure RzToolbarButton1Click(Sender: TObject);
    procedure RzButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    public
  var
    dT: Tdatos;
    { Public declarations }
  end;
var
  Form3: TForm3;
implementation

uses
  general, Unit2;

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
begin
  dT := Tdatos.Create(self);
end;

procedure TForm3.FormDestroy(Sender: TObject);
begin
  dT.Free;
end;

procedure TForm3.RzButton1Click(Sender: TObject);
var
  frm3: TForm3;
begin
  frm3 := TForm3.Create(self);
  try
    frm3.ShowModal
  finally
    FreeAndnil(frm3);
  end;
end;

procedure TForm3.RzToolbarButton1Click(Sender: TObject);
begin
  close;
end;

procedure TForm3.RzToolbarButton2Click(Sender: TObject);
begin

  if inserta then
  begin
    dt.proce.ExecProc; // generador de ID firebird
  [b]  dt.cliente.Append; AQUI DA ERROR ( VER IMAGEN ADJUNTA)
    dt.cliente.FieldByName('id').AsInteger :=
      dt.proce.ParamByName('CODD4').AsInteger;
    dt.cliente.FieldByName('material').asstring := edit1.Text;
    dt.cliente.FieldByName('Suministra').asstring := edit2.Text;
    dt.cliente.Post;
    dt.cliente.ApplyUpdates(-1);
    dt.Conexion.Commit;
    close;
  end;
  if edita then
  begin
    dT.cliente.edit; AQUI DA ERROR  ( VER IMAGEN ADJUNTA).
    dT.cliente.FieldByName('material').asstring := edit1.Text;
    dT.cliente.FieldByName('suministra').asstring := edit2.Text;
    dT.cliente.Post;
    dT.cliente.ApplyUpdates(-1);
    dT.Conexion.Commit;
    close;
  end;
end;

end.
Imágenes Adjuntas
Tipo de Archivo: jpg ERROR.jpg (30,8 KB, 19 visitas)
Responder Con Cita
  #2  
Antiguo 28-09-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿No estará activo?
Responder Con Cita
  #3  
Antiguo 28-09-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Gracias Casimiro por tu ayuda.
Pues si que lo está,además hace cosas muy raras , sales y entras en la aplicación y lo datos están actualizados.
Responder Con Cita
  #4  
Antiguo 28-09-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Echa un vistazo a estos enlaces.
Responder Con Cita
  #5  
Antiguo 28-09-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Smile

Bueno ya miré con anterioridad la mitad de ellos y casi todos coinciden en que está cerrado el dataset pero aqui no es el caso.
Al final solo instanciaré de las form y el datamodule lo creare al inicio que ya probé y no da problemas.
El objetivo era no cargar mucho la red.
Gracias Casimiro nuevamente.
Responder Con Cita
  #6  
Antiguo 30-09-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Siempre puedes preguntar (con un IF) por el estado del Dataset, antes de realizar el Edit.

Código Delphi [-]
if not dT.cliente.Active then
    dT.cliente.Open
else
    dT.cliente.Edit;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 01-10-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Gracias por contestar.
Si, ya lo hice también y está abierto.
No será que clientdataset no se lleva bien con instanciar los datamodules?
Si creo el datamodule al inicio no hay problemas.
Gracias .
Responder Con Cita
  #8  
Antiguo 01-10-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por botones67 Ver Mensaje
Si, ya lo hice también y está abierto.
No será que clientdataset no se lleva bien con instanciar los datamodules?
Si creo el datamodule al inicio no hay problemas.

Es raro, porque yo instancio Datamodules y los creo en ejecución sin problemas.
No será algo relacionado con el código que estás utilizando; Otro datamodule relacionado, algún evento que está saltando sobre otro objeto,...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 02-10-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Hola Germán.
El código ya lo ves arriba donde creo el datamodule.
Una vez creado veo sin problemastodo lo que contiene pero a la hora de actualizar se queja dice que no está abierto los datos.
No sé, un expediente X.
Gracias un saludo.
Responder Con Cita
  #10  
Antiguo 02-10-2019
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
¿Y el código del datamodule? ¿Donde realizas la conexión? Es que con lo que muestras es apenas normal que los datasets estén inactivos.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #11  
Antiguo 02-10-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Buenas.
A ver , Añado un datamodule a proyecto , suelto todos los componentes conexión , dataset, datasource a ect ect , todo conectado ok , pero no lo lo creo con la ejecución del programa , solo lo instancio en el
Form que me hace falta .
También he probado
Conectarlo todo en ejecución y sigue igual.
He de decir que todo
Funciona si creo el datamodule con el único del
Programa.
Gracias por interesaros .
Responder Con Cita
  #12  
Antiguo 02-10-2019
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Buenas.
A ver, no está de más que valides si está conectado y activo y si no, pues haces lo propio. (Es decir: Lo conectas y lo abres... lo escribo por si no se entiende que quise decir con "lo propio")
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #13  
Antiguo 02-10-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Reholas...
Gracias por tu atención.
Pues eso, que no esta de mas , no, ya lo hago y no funciona.
Responder Con Cita
  #14  
Antiguo 02-10-2019
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Estamos a ciegas. tocarías que compartas el código.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #15  
Antiguo 02-10-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Estaría bien ver el código, ya que resulta muy extraño.
Responder Con Cita
  #16  
Antiguo 03-10-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Bueno bueno.
Quiero daros las gracias y a su vez pediros perdón por la insistencia ,pero efectivamente no abría el dataset correctamente y claro,si no está abierto mal asunto, perdón.
La cuestión ahora es la siguente tengo un form general donde tengo el grid con los datos del dataset y un botón que llama a otro form donde añado o editar dependiendo del usuario.
El este último form es donde creo el hago el create del datamodule y añado o modificó los registros y surge la duda.
Cuando salgo de ese fin en realidad si se modificaron los datos pero no los veo actualizados hasta que no llamo al método refresh del dataset,¿ Hay alguna manera del poder ver los datos actualizados sin necesidad de llamar a citado método cada vez que los modifico ?
Yo hago así en la salida del form
Código Delphi [-]
Var Dt:  tdatamudule1;
Dt:=tdatamudule1.ceate(self);

Dt.Clientes.edit;
.....
.....  Igualo los campos 
....
Dt.clientes.post;
Dt.clientes.applyupdate(-1);
DT.connexion.commit;
Sí aquí refresco no se refleja en el grid ,solo se refleja si hago refresh desde el form donde tengo el grid pero 
no me parece muy correcto refrescar el grid cada vez que modifico o añado algún registro.
Bueno; por último pediros perdón por la paciencia que tenéis conmigo.
Gracias a todos.

Última edición por Casimiro Notevi fecha: 03-10-2019 a las 13:03:00.
Responder Con Cita
  #17  
Antiguo 03-10-2019
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Todos los que estamos pendientes de esta novela, queremos ver si en algún lugar aparece la linea que resalto en rojo:

Código Delphi [-]
Var Dt:  tdatamudule1;
Dt:=tdatamudule1.ceate(self);

Dt.Clientes.Open;

Dt.Clientes.edit;
.....
.....  Igualo los campos 
....
Dt.clientes.post;
Dt.clientes.applyupdate(-1);
DT.connexion.commit;
Sí aquí refresco no se refleja en el grid ,solo se refleja si hago refresh desde el form donde tengo el grid pero 
no me parece muy correcto refrescar el grid cada vez que modifico o añado algún registro.
Responder Con Cita
  #18  
Antiguo 03-10-2019
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
El error original apunta a eso: "Cannot perform this operation o a closed dataset"... litermalmente dice: "no se puede hacer esta operación en un dataset cerrado"... No puedes insertar, actualizar o eliminar en un dataset que está cerrado.

El clientDataset se abre con un open, o en el momento que asignas un valor a XMLData o sise crea como un dataset en memoria en tiempo de diseño con "Create Dataset"... pero al parecer ninguna de estas aciones se está llevando a cabo...

saludo,
Responder Con Cita
  #19  
Antiguo 03-10-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por gatosoft Ver Mensaje
Todos los que estamos pendientes de esta novela, queremos ver si en algún lugar aparece la linea que resalto en rojo:
Dt.Clientes.Open;
Pues sí
Responder Con Cita
  #20  
Antiguo 03-10-2019
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
A la... se acabo la novela.
GatoSoft; eso + actualizaba los datos donde no debía, si no fuera por vosotros......
Gracias.

Última edición por botones67 fecha: 03-10-2019 a las 19:15:44.
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
Instanciar Objeto COM moneiro Providers 4 10-03-2011 16:35:27
datamodule josi Varios 22 11-12-2008 08:07:42
Como instanciar objetos de los cuales solo se conoce su clase ancestro AzidRain OOP 7 11-07-2008 02:58:17
Instanciar Clase buildero_d OOP 2 05-10-2006 06:12:56
Instanciar un form más de una vez vpepen Varios 6 30-07-2004 13:44:35


La franja horaria es GMT +2. Ahora son las 18:49: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
Copyright 1996-2007 Club Delphi