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)
-   -   Algo mas sobre ADOTable (https://www.clubdelphi.com/foros/showthread.php?t=47154)

Ledian_Fdez 20-08-2007 14:51:09

Algo mas sobre ADOTable
 
Hola amigos:

Pues hoy estoy acá con la siguiente inquietud.

Antes que nada decirle quiero que mi aplicación esta en Delphi7, la Base de Datos en Access y me conecto a través de ADO.

Supongamos que tenemos una ADOTable1 con una serie de controles y entre ellos el Button1. Mi pregunta es: ¿Cómo podré deshabilitar el Button1 mientras que el ADOTable1 este en edición o insertándole un nuevo registro, en fin que se estén manipulando sus datos, para después ser guardado?

El problema es que el Button1 me llama a un formulario donde me es necesario que el usuario no intente llegar a el sin antes tener guardado todos los datos del ADOTable1.

Espero que me hayan entendido.

Salu2
Ledian

roman 20-08-2007 14:59:38

Aunque no es exactamente lo que preguntas, podrías comenzar el código de ese botón preguntando por el estado del dataset:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not (ADOTable1.State in dsEditModes) then
  begin
  {
    Aquí tu código
  }
  end;
end;

De esta manera te aseguras de no abrir esa ventana si el dataset está en edición o inserción.

Más allá de eso, si usas un ActionList para las acciones de tus botones, puedes usar su evento OnUpdate para ese tipo de cosas:

Código Delphi [-]
Action1.Enabled := not (ADOTAble1.State in dsEditModes);

// Saludos

Ledian_Fdez 20-08-2007 15:11:39

Msg Error !!!
 
Roman este codigo:


Código Delphi [-]
procedure TModelo1Form.RxSpeedButton8Click(Sender: TObject);
begin
 if not (DM.TblModelo1.State in dsEditModes) then
   begin
    Try
     Application.CreateForm(TAnalisisForm, AnalisisForm);
     AnalisisForm.ShowModal;
    Finally
     AnalisisForm.Free;
     AnalisisForm := nil;
    End
   end
 else ShowMessage('Debes guardar los datos primero');
end;


me genera el sgte error:
[Error] Modelo1.pas(127): Undeclared identifier: 'dsEditModes'


salu2
Ledian

roman 20-08-2007 15:13:30

¿Y crees que poniéndome un signo de desaprobación es la mejor manera de pedir ayuda?

// Saludos

Ledian_Fdez 20-08-2007 15:20:44

Lo siento
 
Lo siento. No entiendo lo que me quieres desir.

Salu2
Ledian

Caral 20-08-2007 15:33:08

Hola
Vamos Roman, que se refiere al error, no te lo tomes personal.:)
Prueba asi:
Código Delphi [-]
procedure TModelo1Form.RxSpeedButton8Click(Sender: TObject);
begin
 If not (DM.TblModelo1.State = dsEdit) or (DM.TblModelo1.State = dsInsert) then
    begin
    Try
     Application.CreateForm(TAnalisisForm, AnalisisForm);
     AnalisisForm.ShowModal;
    Finally
     AnalisisForm.Free;
     AnalisisForm := nil;
    End
   end
 else ShowMessage('Debes guardar los datos primero');
end;
Saludos

Ledian_Fdez 20-08-2007 15:45:52

Aun nada !!!
 
Roman, Caral tiene razon, no me mal interprete. Me referia al ERROR.


Bueno volviendo al tema señores el error persiste. Tendré que agregar alguna use, o tendré alga mal escrito, por favor les agradesería que me ayudaran con esto.

Salu2
Ledian

Caral 20-08-2007 15:49:20

Hola
Perdona pero no te puede salir el mismo error.
Cual error te da?.
Saludos

Ledian_Fdez 20-08-2007 15:56:29

mmm !!
 
[Error] Modelo1.pas(115): Undeclared identifier: 'dsIsert'
[Error] Modelo1.pas(115): Undeclared identifier: 'dsEdit'

Caral 20-08-2007 16:19:30

Hola
Estos son los uses que tengo, quizás sea el problema, no lo se.
Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, ComCtrls, DB, ADODB,
  Buttons, Grids, DBGrids;
Revisalo.
Saludos

Ledian_Fdez 20-08-2007 16:41:55

ok
 
Así mismo, ese era el problema.
Tenía que agregar al uses DB y ya me funciona, aunque en el Insert no me funciona bien, pero busque en la ayuda y mi código me queó asi:

i
Código Delphi [-]
f (DM.TblModelo1.State = dsBrowse) then
   begin
    Try
     Application.CreateForm(TAnalisisForm, AnalisisForm);
     AnalisisForm.ShowModal;
    Finally
     AnalisisForm.Free;
     AnalisisForm := nil;
    End
   end
 else ShowMessage('Debes guardar los datos primero');

Aunque a decir verdad. En si no es lo que buscaba pero bueno, podría usarse momentáneamente de esa manera.

Caral miles de gracias por tu paciencia


Salu2
Ledian


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

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi