´dataset not in edit or insert mode´
Bom dia a todos.
Sou iniciante e estou com um probleminha no código do formulário anexo. Estou usando BD Access 97 e Delphi 6. Tenho duas Tabelas (ADOTClientes, ADOTOdonto) no formulário Cadastro de Clientes. Já fiz a ligação das duas tabelas pelo MasterSource CodCli do ADOClientes, que é o campo chave, com o CodCli do ADOTOdonto que é campo numérico.
Só estou conseguindo exibir os registros que inseri através do Access, porém quando edito e tento salvar as alterações ele dá o erro: ´dataset not in edit or insert mode´ e qdo tento adicionar um novo registro erro: ´Field CodCli cannot be modofied´.
Anexo codigo da unit e desde já agradeço todo tipo de auxílio.
unit UPageControl;
interface
USES Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Buttons, ToolWin, ComCtrls,
StdCtrls, Mask, TabNotBk, IdBaseComponent, IdDateTimeStamp,
IdNetworkCalculator, CustomizeDlg, Tabs, jpeg, ExtDlgs;
type
TPagesDlg = class(TForm)
Panel1: TPanel;
FCadastro: TPageControl;
TSCadastro: TTabSheet;
TSFichaClinica: TTabSheet;
TSAnamnese: TTabSheet;
Bevel1: TBevel;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
SB_Cidades: TSpeedButton;
Label14: TLabel;
Label15: TLabel;
SB_Bairros: TSpeedButton;
DBE_CPFCNPJ: TDBEdit;
DBE_RGIE: TDBEdit;
DBE_Endereco: TDBEdit;
DBE_Fone: TDBEdit;
DBE_DatIniTrat: TDBEdit;
DBE_DataNasc: TDBEdit;
DBE_FCom: TDBEdit;
DBE_CEP: TDBEdit;
CB_Cidade: TDBLookupComboBox;
CB_Sexo: TDBLookupComboBox;
CB_Convenio: TDBLookupComboBox;
DBC_Dependentes: TDBCheckBox;
DBE_Responsavel: TDBEdit;
DBC_Ativo: TDBCheckBox;
DBC_Titular: TDBCheckBox;
DBC_Bairro: TDBLookupComboBox;
ADOTClientes: TADOTable;
ADOTClientesCodCli: TAutoIncField;
ADOTClientesSexoCli: TIntegerField;
ADOTClientesRGCli: TWideStringField;
ADOTClientesCPFCli: TWideStringField;
ADOTClientesEstCivCli: TWordField;
ADOTClientesDatNascCli: TDateTimeField;
ADOTClientesEndCli: TWideStringField;
ADOTClientesBaiCli: TWideStringField;
ADOTClientesCEPCli: TWideStringField;
ADOTClientesFResCli: TWideStringField;
ADOTClientesEmailCli: TWideStringField;
ADOTClientesRespCli: TWideStringField;
ADOTClientesDepCli: TBooleanField;
ADOTClientesTitularCli: TBooleanField;
ADOTClientesAtivoCli: TBooleanField;
ADOTClientesConvCli: TIntegerField;
ADOTClientesProfCli: TWideStringField;
ADOTClientesEmprCli: TWideStringField;
ADOTClientesEndCCli: TWideStringField;
ADOTClientesCEPCCli: TWideStringField;
ADOTClientesFComCli: TWideStringField;
ADOTClientesCidPCli: TWideStringField;
ADOTClientesUFCli: TIntegerField;
ADOTClientesDatIniTratCli: TDateTimeField;
ADOTClientesObsCli: TMemoField;
ADOTClientesNomCli: TWideStringField;
ADOTClientesCodCid: TIntegerField;
DSClientes: TDataSource;
ADOTCidades: TADOTable;
ADOTCidadesCodCid: TAutoIncField;
ADOTCidadesNomCid: TWideStringField;
ADOTCidadesUFCid: TWideStringField;
DSCidades: TDataSource;
ADOTSexo: TADOTable;
ADOTSexoCod: TAutoIncField;
ADOTSexoSexo: TWideStringField;
DSSexo: TDataSource;
DSConvenios: TDataSource;
ADOTConvenios: TADOTable;
ADOTConveniosCodConv: TAutoIncField;
ADOTConveniosNome: TWideStringField;
ADOTConveniosPorcConv: TIntegerField;
ADOTBairros: TADOTable;
ADOTBairrosCod: TAutoIncField;
ADOTBairrosBairro: TWideStringField;
DSBairros: TDataSource;
StaticText1: TStaticText;
DBE_Nome: TDBEdit;
Label2: TLabel;
Panel2: TPanel;
B_Novo: TBitBtn;
B_Editar: TBitBtn;
B_Salvar: TBitBtn;
B_Cancelar: TBitBtn;
B_Excluir: TBitBtn;
B_Fechar: TBitBtn;
B_Localizar: TBitBtn;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
Label13: TLabel;
StaticText2: TStaticText;
Label16: TLabel;
DBE_Email: TDBEdit;
Label17: TLabel;
DBE_Profissao: TDBEdit;
Label18: TLabel;
DBE_Empresa: TDBEdit;
DBE_UF: TDBEdit;
Label20: TLabel;
DBM_Obs: TDBMemo;
Label19: TLabel;
DBC_EstCivil: TDBLookupComboBox;
ADOTEstCivil: TADOTable;
DSEstCivil: TDataSource;
ADOTEstCivilCod: TAutoIncField;
ADOTEstCivilEstadoCivil: TWideStringField;
Image1: TImage;
Shape9: TShape;
Shape10: TShape;
Shape11: TShape;
Shape12: TShape;
Shape13: TShape;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Shape5: TShape;
Shape6: TShape;
Shape7: TShape;
Shape8: TShape;
Shape14: TShape;
Shape15: TShape;
ADOTOdonto: TADOTable;
DSOdonto: TDataSource;
ADOTClientesimagemCli: TBlobField;
DBC1: TDBCheckBox;
DBC2: TDBCheckBox;
DBC3: TDBCheckBox;
DBC4: TDBCheckBox;
DBC5: TDBCheckBox;
ADOTOdontoCodcli: TAutoIncField;
ADOTOdontoDSDesigner1: TBooleanField;
ADOTOdontoDSDesigner2: TBooleanField;
ADOTOdontoDSDesigner3: TBooleanField;
ADOTOdontoDSDesigner4: TBooleanField;
ADOTOdontoDSDesigner5: TBooleanField;
ADOTClientesDSDesigner1: TBooleanField;
DBCheckBox1: TDBCheckBox;
Label21: TLabel;
DBImage1: TDBImage;
Opdfoto: TOpenPictureDialog;
ADOTOdontoCod: TAutoIncField;
Label22: TLabel;
DBEdit1: TDBEdit;
Label23: TLabel;
DBEdit2: TDBEdit;
procedure B_FecharClick3(Sender: TObject);
procedure B_NovoClick(Sender: TObject);
procedure B_EditarClick(Sender: TObject);
procedure B_SalvarClick(Sender: TObject);
procedure B_CancelarClick(Sender: TObject);
procedure B_ExcluirClick(Sender: TObject);
procedure B_LocalizarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DSClientesStateChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SB_CidadesClick(Sender: TObject);
procedure DSClientesDataChange(Sender: TObject; Field: TField);
procedure BitBtn1Click(Sender: TObject);
procedure SB_BairrosClick(Sender: TObject);
procedure B_FecharClick(Sender: TObject);
procedure Shape12MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape6MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape7MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape14MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape8MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape11MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape9MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape13MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape10MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape15MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DBImage1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
PagesDlg: TPagesDlg;
implementation
uses uPrinc, UnitListaCidades, UQRClientes, UListaClientes, UBairros;
{$R *.dfm}
procedure TPagesDlg.B_FecharClick3(Sender: TObject);
begin
close;
end;
procedure TPagesDlg.B_NovoClick(Sender: TObject);
begin
ADOTClientes.Append;
ADOTOdonto.Append;
DBE_Nome.SetFocus
end;
procedure TPagesDlg.B_EditarClick(Sender: TObject);
begin
DSClientes.Edit;
ADOTClientes.Edit;
DSOdonto.Edit;
ADOTOdonto.Edit;
DBE_Nome.SetFocus;
end;
procedure TPagesDlg.B_SalvarClick(Sender: TObject);
begin
If ADOTClientesNomCli.AsString<> ´´ then
begin
if not (DSOdonto.state in [dsEdit, dsInsert]) then DSOdonto.edit;
ADOTClientes.Post;
ADOTOdonto.Post;
end
else ShowMessage(´Faltam dados para efetivar o cadastro!! Insira nome do cliente.´);
end;
procedure TPagesDlg.B_CancelarClick(Sender: TObject);
begin
ADOTClientes.Cancel;
ADOTOdonto.Cancel;
end;
procedure TPagesDlg.B_ExcluirClick(Sender: TObject);
begin
if Application.MessageBox(
´Deseja realmente excluir o registro?´,
´Confirmar Exclusão ?´,MB_ICONQUESTION+
mb_YesNo) = idYes then
ADOTClientes.Delete;
end;
procedure TPagesDlg.B_LocalizarClick(Sender: TObject);
var
texto:String;
begin
if inputquery(´Digite aqui o nome do cliente´,
´Localizar´,texto) then
ADOTClientes.Locate(´NomCli´,
texto,[loCaseInsensitive,
loPartialKey]);
end;
procedure TPagesDlg.FormShow(Sender: TObject);
begin
ADOTClientes.Open;
ADOTOdonto.Open;
end;
procedure TPagesDlg.FormCreate(Sender: TObject);
begin
try
ADOTClientes.Open;
ADOTCidades.Open;
ADOTOdonto.Open;
except
Showmessage(´Erro ao acessar a tabela de clientes.´
+#13+13+´Contate o suporte.´);
close;
end;
end;
procedure TPagesDlg.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
// PULAR CAMPO COM ENTER
if (key = vk_return) then
SelectNext(ActiveControl,true,true)
else if (key = vk_up) then
SelectNext(ActiveControl,false,true);
end;
procedure TPagesDlg.DSClientesStateChange(Sender: TObject);
begin
if ADOTClientes.State in [dsEdit,dsInsert] then
begin
B_Novo.Enabled:=False;
B_Editar.Enabled:=False;
B_Salvar.Enabled:=True;
B_Cancelar.Enabled:=True;
B_Excluir.Enabled:=False;
B_Localizar.Enabled:=False;
CB_Sexo.Color:=clInfoBK;
DBE_CPFCNPJ.Color:=clInfoBK;
DBE_Nome.Color:=clInfoBK;
DBE_RGIE.Color:=clInfoBK;
DBE_Endereco.Color:=clInfoBK;
DBC_Bairro.Color:=clInfoBK;
DBE_Fone.Color:=clInfoBK;
DBE_Email.Color:=clInfoBK;
DBE_DataNasc.Color:=clInfoBK;
DBE_FCom.Color:=clInfoBK;
DBE_CEP.Color:=clInfoBK;
DBE_UF.Color:=clInfoBk;
CB_Cidade.Color:=clInfoBK;
CB_Convenio.Color:=clInfoBk;
DBC_Titular.Color:=clInfoBk;
DBC_Dependentes.Color:=clInfoBk;
DBC_Ativo.Color:=clInfoBk;
DBC_EstCivil.Color:=clInfoBk;
DBE_Responsavel.Color:=clInfoBk;
DBE_Profissao.Color:=clInfoBk;
DBE_Empresa.Color:=clInfoBk;
DBE_DatIniTrat.Color:=clInfoBk;
DBM_Obs.Color:=clInfoBk;
DBC1.Color:=clInfoBk;
DBC2.Color:=clInfoBk;
end
else
begin
B_Novo.Enabled:=True;
B_Editar.Enabled:=True;
B_Salvar.Enabled:=False;
B_Cancelar.Enabled:=False;
B_Excluir.Enabled:=True;
B_Localizar.Enabled:=True;
CB_Sexo.Color:=clWhite;
DBE_CPFCNPJ.Color:=clWhite;
DBE_Nome.Color:=clWhite;
DBE_RGIE.Color:=clWhite;
DBE_Endereco.Color:=clWhite;
DBC_Bairro.Color:=clWhite;
DBE_Fone.Color:=clWhite;
DBE_Email.Color:=clWhite;
DBE_DataNasc.Color:=clWhite;
DBE_FCom.Color:=clWhite;
DBE_CEP.Color:=clWhite;
DBE_UF.Color:=clWhite;
CB_Cidade.Color:=clWhite;
CB_Convenio.Color:=clWhite;
DBC_Titular.Color:=clBtnface;
DBC_Dependentes.Color:=clBtnFace;
DBC_Ativo.Color:=clBtnface;
DBC_EstCivil.Color:=clWhite;
DBE_Responsavel.Color:=clWhite;
DBE_Profissao.Color:=clWhite;
DBE_Empresa.Color:=clWhite;
DBE_DatIniTrat.Color:=clWhite;
DBM_Obs.Color:=clWhite;
DBC1.Color:=clBtnFace;
DBC2.Color:=clBtnFace;
end;
end;
procedure TPagesDlg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if ADOTClientes.State in
[dsedit,dsInsert] then
case Application.MessageBox(
´A tabela esta sendo editada, ´+
´gostaria de salvar as alterações?´
,´Salvar Alterações ...´,
MB_YESNOCANCEL+MB_ICONQUESTION) of
idYes: ADOTClientes.post;
//idYes: ADOTOdonto.post;
idNo: ADOTClientes.Cancel;
//idNo: ADOTOdonto.Cancel;
idCancel: action := caNone;
end;
end;
procedure TPagesDlg.SB_CidadesClick(Sender: TObject);
begin
FormListaCidades.showmodal;
FormListaCidades.Refresh;
end;
procedure TPagesDlg.DSClientesDataChange(Sender: TObject;
Field: TField);
begin
case ADOTClientes.state of
dsInsert: StaticText1.Caption:=´Novo Registro´;
dsEdit : StaticText1.Caption:=´Editando Registro´;
else
begin
StaticText1.Caption:=´Registro ´+
InttoSTR(ADOTClientes.RecNo)+´ de ´+
InttoSTR(ADOTClientes.RecordCount);
end;
end;
end;
procedure TPagesDlg.BitBtn1Click(Sender: TObject);
begin
with TFRelClientes.Create(self) do
try
QuickReport1.Preview;
finally
free;
end;
end;
procedure TPagesDlg.SB_BairrosClick(Sender: TObject);
begin
FCadBairros.showmodal;
end;
procedure TPagesDlg.B_FecharClick(Sender: TObject);
begin
Close;
end;
procedure TPagesDlg.Shape12MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape12.Brush.Color=clgray then
Shape12.Brush.Color:= clwhite
else
shape12.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape6MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape6.Brush.Color=clgray then
Shape6.Brush.Color:= clwhite
else
shape6.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape7MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape7.Brush.Color=clgray then
Shape7.Brush.Color:= clwhite
else
shape7.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape14MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape14.Brush.Color=clgray then
Shape14.Brush.Color:= clwhite
else
shape14.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape8MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape8.Brush.Color=clgray then
Shape8.Brush.Color:= clwhite
else
shape8.Brush.Color:=clgray;
if shape8.Brush.Color=clgray then
ADOTOdontoDSDesigner1.Value:=True
else
ADOTOdontoDSDesigner1.Value:=False;
end;
procedure TPagesDlg.Shape11MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape11.Brush.Color=clgray then
Shape11.Brush.Color:= clwhite
else
shape11.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape9MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape9.Brush.Color=clgray then
Shape9.Brush.Color:= clwhite
else
shape9.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape13MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape13.Brush.Color=clgray then
Shape13.Brush.Color:= clwhite
else
shape13.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape10MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape10.Brush.Color=clgray then
Shape10.Brush.Color:= clwhite
else
shape10.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape15MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape15.Brush.Color=clgray then
Shape15.Brush.Color:= clwhite
else
shape15.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape2.Brush.Color=clgray then
Shape2.Brush.Color:= clwhite
else
shape2.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape3.Brush.Color=clgray then
Shape3.Brush.Color:= clwhite
else
shape3.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape5.Brush.Color=clgray then
Shape5.Brush.Color:= clwhite
else
shape5.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape1.Brush.Color=clgray then
Shape1.Brush.Color:= clwhite
else
shape1.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape4.Brush.Color=clgray then
Shape4.Brush.Color:= clwhite
else
shape4.Brush.Color:=clgray;
end;
procedure TPagesDlg.DBImage1Click(Sender: TObject);
begin
if OpdFoto.Execute = true then;
DBImage1.Picture.LoadFromFile(OpdFoto.FileName);
end;
end.
Sou iniciante e estou com um probleminha no código do formulário anexo. Estou usando BD Access 97 e Delphi 6. Tenho duas Tabelas (ADOTClientes, ADOTOdonto) no formulário Cadastro de Clientes. Já fiz a ligação das duas tabelas pelo MasterSource CodCli do ADOClientes, que é o campo chave, com o CodCli do ADOTOdonto que é campo numérico.
Só estou conseguindo exibir os registros que inseri através do Access, porém quando edito e tento salvar as alterações ele dá o erro: ´dataset not in edit or insert mode´ e qdo tento adicionar um novo registro erro: ´Field CodCli cannot be modofied´.
Anexo codigo da unit e desde já agradeço todo tipo de auxílio.
unit UPageControl;
interface
USES Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Buttons, ToolWin, ComCtrls,
StdCtrls, Mask, TabNotBk, IdBaseComponent, IdDateTimeStamp,
IdNetworkCalculator, CustomizeDlg, Tabs, jpeg, ExtDlgs;
type
TPagesDlg = class(TForm)
Panel1: TPanel;
FCadastro: TPageControl;
TSCadastro: TTabSheet;
TSFichaClinica: TTabSheet;
TSAnamnese: TTabSheet;
Bevel1: TBevel;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
SB_Cidades: TSpeedButton;
Label14: TLabel;
Label15: TLabel;
SB_Bairros: TSpeedButton;
DBE_CPFCNPJ: TDBEdit;
DBE_RGIE: TDBEdit;
DBE_Endereco: TDBEdit;
DBE_Fone: TDBEdit;
DBE_DatIniTrat: TDBEdit;
DBE_DataNasc: TDBEdit;
DBE_FCom: TDBEdit;
DBE_CEP: TDBEdit;
CB_Cidade: TDBLookupComboBox;
CB_Sexo: TDBLookupComboBox;
CB_Convenio: TDBLookupComboBox;
DBC_Dependentes: TDBCheckBox;
DBE_Responsavel: TDBEdit;
DBC_Ativo: TDBCheckBox;
DBC_Titular: TDBCheckBox;
DBC_Bairro: TDBLookupComboBox;
ADOTClientes: TADOTable;
ADOTClientesCodCli: TAutoIncField;
ADOTClientesSexoCli: TIntegerField;
ADOTClientesRGCli: TWideStringField;
ADOTClientesCPFCli: TWideStringField;
ADOTClientesEstCivCli: TWordField;
ADOTClientesDatNascCli: TDateTimeField;
ADOTClientesEndCli: TWideStringField;
ADOTClientesBaiCli: TWideStringField;
ADOTClientesCEPCli: TWideStringField;
ADOTClientesFResCli: TWideStringField;
ADOTClientesEmailCli: TWideStringField;
ADOTClientesRespCli: TWideStringField;
ADOTClientesDepCli: TBooleanField;
ADOTClientesTitularCli: TBooleanField;
ADOTClientesAtivoCli: TBooleanField;
ADOTClientesConvCli: TIntegerField;
ADOTClientesProfCli: TWideStringField;
ADOTClientesEmprCli: TWideStringField;
ADOTClientesEndCCli: TWideStringField;
ADOTClientesCEPCCli: TWideStringField;
ADOTClientesFComCli: TWideStringField;
ADOTClientesCidPCli: TWideStringField;
ADOTClientesUFCli: TIntegerField;
ADOTClientesDatIniTratCli: TDateTimeField;
ADOTClientesObsCli: TMemoField;
ADOTClientesNomCli: TWideStringField;
ADOTClientesCodCid: TIntegerField;
DSClientes: TDataSource;
ADOTCidades: TADOTable;
ADOTCidadesCodCid: TAutoIncField;
ADOTCidadesNomCid: TWideStringField;
ADOTCidadesUFCid: TWideStringField;
DSCidades: TDataSource;
ADOTSexo: TADOTable;
ADOTSexoCod: TAutoIncField;
ADOTSexoSexo: TWideStringField;
DSSexo: TDataSource;
DSConvenios: TDataSource;
ADOTConvenios: TADOTable;
ADOTConveniosCodConv: TAutoIncField;
ADOTConveniosNome: TWideStringField;
ADOTConveniosPorcConv: TIntegerField;
ADOTBairros: TADOTable;
ADOTBairrosCod: TAutoIncField;
ADOTBairrosBairro: TWideStringField;
DSBairros: TDataSource;
StaticText1: TStaticText;
DBE_Nome: TDBEdit;
Label2: TLabel;
Panel2: TPanel;
B_Novo: TBitBtn;
B_Editar: TBitBtn;
B_Salvar: TBitBtn;
B_Cancelar: TBitBtn;
B_Excluir: TBitBtn;
B_Fechar: TBitBtn;
B_Localizar: TBitBtn;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
Label13: TLabel;
StaticText2: TStaticText;
Label16: TLabel;
DBE_Email: TDBEdit;
Label17: TLabel;
DBE_Profissao: TDBEdit;
Label18: TLabel;
DBE_Empresa: TDBEdit;
DBE_UF: TDBEdit;
Label20: TLabel;
DBM_Obs: TDBMemo;
Label19: TLabel;
DBC_EstCivil: TDBLookupComboBox;
ADOTEstCivil: TADOTable;
DSEstCivil: TDataSource;
ADOTEstCivilCod: TAutoIncField;
ADOTEstCivilEstadoCivil: TWideStringField;
Image1: TImage;
Shape9: TShape;
Shape10: TShape;
Shape11: TShape;
Shape12: TShape;
Shape13: TShape;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Shape5: TShape;
Shape6: TShape;
Shape7: TShape;
Shape8: TShape;
Shape14: TShape;
Shape15: TShape;
ADOTOdonto: TADOTable;
DSOdonto: TDataSource;
ADOTClientesimagemCli: TBlobField;
DBC1: TDBCheckBox;
DBC2: TDBCheckBox;
DBC3: TDBCheckBox;
DBC4: TDBCheckBox;
DBC5: TDBCheckBox;
ADOTOdontoCodcli: TAutoIncField;
ADOTOdontoDSDesigner1: TBooleanField;
ADOTOdontoDSDesigner2: TBooleanField;
ADOTOdontoDSDesigner3: TBooleanField;
ADOTOdontoDSDesigner4: TBooleanField;
ADOTOdontoDSDesigner5: TBooleanField;
ADOTClientesDSDesigner1: TBooleanField;
DBCheckBox1: TDBCheckBox;
Label21: TLabel;
DBImage1: TDBImage;
Opdfoto: TOpenPictureDialog;
ADOTOdontoCod: TAutoIncField;
Label22: TLabel;
DBEdit1: TDBEdit;
Label23: TLabel;
DBEdit2: TDBEdit;
procedure B_FecharClick3(Sender: TObject);
procedure B_NovoClick(Sender: TObject);
procedure B_EditarClick(Sender: TObject);
procedure B_SalvarClick(Sender: TObject);
procedure B_CancelarClick(Sender: TObject);
procedure B_ExcluirClick(Sender: TObject);
procedure B_LocalizarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DSClientesStateChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SB_CidadesClick(Sender: TObject);
procedure DSClientesDataChange(Sender: TObject; Field: TField);
procedure BitBtn1Click(Sender: TObject);
procedure SB_BairrosClick(Sender: TObject);
procedure B_FecharClick(Sender: TObject);
procedure Shape12MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape6MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape7MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape14MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape8MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape11MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape9MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape13MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape10MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape15MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DBImage1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
PagesDlg: TPagesDlg;
implementation
uses uPrinc, UnitListaCidades, UQRClientes, UListaClientes, UBairros;
{$R *.dfm}
procedure TPagesDlg.B_FecharClick3(Sender: TObject);
begin
close;
end;
procedure TPagesDlg.B_NovoClick(Sender: TObject);
begin
ADOTClientes.Append;
ADOTOdonto.Append;
DBE_Nome.SetFocus
end;
procedure TPagesDlg.B_EditarClick(Sender: TObject);
begin
DSClientes.Edit;
ADOTClientes.Edit;
DSOdonto.Edit;
ADOTOdonto.Edit;
DBE_Nome.SetFocus;
end;
procedure TPagesDlg.B_SalvarClick(Sender: TObject);
begin
If ADOTClientesNomCli.AsString<> ´´ then
begin
if not (DSOdonto.state in [dsEdit, dsInsert]) then DSOdonto.edit;
ADOTClientes.Post;
ADOTOdonto.Post;
end
else ShowMessage(´Faltam dados para efetivar o cadastro!! Insira nome do cliente.´);
end;
procedure TPagesDlg.B_CancelarClick(Sender: TObject);
begin
ADOTClientes.Cancel;
ADOTOdonto.Cancel;
end;
procedure TPagesDlg.B_ExcluirClick(Sender: TObject);
begin
if Application.MessageBox(
´Deseja realmente excluir o registro?´,
´Confirmar Exclusão ?´,MB_ICONQUESTION+
mb_YesNo) = idYes then
ADOTClientes.Delete;
end;
procedure TPagesDlg.B_LocalizarClick(Sender: TObject);
var
texto:String;
begin
if inputquery(´Digite aqui o nome do cliente´,
´Localizar´,texto) then
ADOTClientes.Locate(´NomCli´,
texto,[loCaseInsensitive,
loPartialKey]);
end;
procedure TPagesDlg.FormShow(Sender: TObject);
begin
ADOTClientes.Open;
ADOTOdonto.Open;
end;
procedure TPagesDlg.FormCreate(Sender: TObject);
begin
try
ADOTClientes.Open;
ADOTCidades.Open;
ADOTOdonto.Open;
except
Showmessage(´Erro ao acessar a tabela de clientes.´
+#13+13+´Contate o suporte.´);
close;
end;
end;
procedure TPagesDlg.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
// PULAR CAMPO COM ENTER
if (key = vk_return) then
SelectNext(ActiveControl,true,true)
else if (key = vk_up) then
SelectNext(ActiveControl,false,true);
end;
procedure TPagesDlg.DSClientesStateChange(Sender: TObject);
begin
if ADOTClientes.State in [dsEdit,dsInsert] then
begin
B_Novo.Enabled:=False;
B_Editar.Enabled:=False;
B_Salvar.Enabled:=True;
B_Cancelar.Enabled:=True;
B_Excluir.Enabled:=False;
B_Localizar.Enabled:=False;
CB_Sexo.Color:=clInfoBK;
DBE_CPFCNPJ.Color:=clInfoBK;
DBE_Nome.Color:=clInfoBK;
DBE_RGIE.Color:=clInfoBK;
DBE_Endereco.Color:=clInfoBK;
DBC_Bairro.Color:=clInfoBK;
DBE_Fone.Color:=clInfoBK;
DBE_Email.Color:=clInfoBK;
DBE_DataNasc.Color:=clInfoBK;
DBE_FCom.Color:=clInfoBK;
DBE_CEP.Color:=clInfoBK;
DBE_UF.Color:=clInfoBk;
CB_Cidade.Color:=clInfoBK;
CB_Convenio.Color:=clInfoBk;
DBC_Titular.Color:=clInfoBk;
DBC_Dependentes.Color:=clInfoBk;
DBC_Ativo.Color:=clInfoBk;
DBC_EstCivil.Color:=clInfoBk;
DBE_Responsavel.Color:=clInfoBk;
DBE_Profissao.Color:=clInfoBk;
DBE_Empresa.Color:=clInfoBk;
DBE_DatIniTrat.Color:=clInfoBk;
DBM_Obs.Color:=clInfoBk;
DBC1.Color:=clInfoBk;
DBC2.Color:=clInfoBk;
end
else
begin
B_Novo.Enabled:=True;
B_Editar.Enabled:=True;
B_Salvar.Enabled:=False;
B_Cancelar.Enabled:=False;
B_Excluir.Enabled:=True;
B_Localizar.Enabled:=True;
CB_Sexo.Color:=clWhite;
DBE_CPFCNPJ.Color:=clWhite;
DBE_Nome.Color:=clWhite;
DBE_RGIE.Color:=clWhite;
DBE_Endereco.Color:=clWhite;
DBC_Bairro.Color:=clWhite;
DBE_Fone.Color:=clWhite;
DBE_Email.Color:=clWhite;
DBE_DataNasc.Color:=clWhite;
DBE_FCom.Color:=clWhite;
DBE_CEP.Color:=clWhite;
DBE_UF.Color:=clWhite;
CB_Cidade.Color:=clWhite;
CB_Convenio.Color:=clWhite;
DBC_Titular.Color:=clBtnface;
DBC_Dependentes.Color:=clBtnFace;
DBC_Ativo.Color:=clBtnface;
DBC_EstCivil.Color:=clWhite;
DBE_Responsavel.Color:=clWhite;
DBE_Profissao.Color:=clWhite;
DBE_Empresa.Color:=clWhite;
DBE_DatIniTrat.Color:=clWhite;
DBM_Obs.Color:=clWhite;
DBC1.Color:=clBtnFace;
DBC2.Color:=clBtnFace;
end;
end;
procedure TPagesDlg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if ADOTClientes.State in
[dsedit,dsInsert] then
case Application.MessageBox(
´A tabela esta sendo editada, ´+
´gostaria de salvar as alterações?´
,´Salvar Alterações ...´,
MB_YESNOCANCEL+MB_ICONQUESTION) of
idYes: ADOTClientes.post;
//idYes: ADOTOdonto.post;
idNo: ADOTClientes.Cancel;
//idNo: ADOTOdonto.Cancel;
idCancel: action := caNone;
end;
end;
procedure TPagesDlg.SB_CidadesClick(Sender: TObject);
begin
FormListaCidades.showmodal;
FormListaCidades.Refresh;
end;
procedure TPagesDlg.DSClientesDataChange(Sender: TObject;
Field: TField);
begin
case ADOTClientes.state of
dsInsert: StaticText1.Caption:=´Novo Registro´;
dsEdit : StaticText1.Caption:=´Editando Registro´;
else
begin
StaticText1.Caption:=´Registro ´+
InttoSTR(ADOTClientes.RecNo)+´ de ´+
InttoSTR(ADOTClientes.RecordCount);
end;
end;
end;
procedure TPagesDlg.BitBtn1Click(Sender: TObject);
begin
with TFRelClientes.Create(self) do
try
QuickReport1.Preview;
finally
free;
end;
end;
procedure TPagesDlg.SB_BairrosClick(Sender: TObject);
begin
FCadBairros.showmodal;
end;
procedure TPagesDlg.B_FecharClick(Sender: TObject);
begin
Close;
end;
procedure TPagesDlg.Shape12MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape12.Brush.Color=clgray then
Shape12.Brush.Color:= clwhite
else
shape12.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape6MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape6.Brush.Color=clgray then
Shape6.Brush.Color:= clwhite
else
shape6.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape7MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape7.Brush.Color=clgray then
Shape7.Brush.Color:= clwhite
else
shape7.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape14MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape14.Brush.Color=clgray then
Shape14.Brush.Color:= clwhite
else
shape14.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape8MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape8.Brush.Color=clgray then
Shape8.Brush.Color:= clwhite
else
shape8.Brush.Color:=clgray;
if shape8.Brush.Color=clgray then
ADOTOdontoDSDesigner1.Value:=True
else
ADOTOdontoDSDesigner1.Value:=False;
end;
procedure TPagesDlg.Shape11MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape11.Brush.Color=clgray then
Shape11.Brush.Color:= clwhite
else
shape11.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape9MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape9.Brush.Color=clgray then
Shape9.Brush.Color:= clwhite
else
shape9.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape13MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape13.Brush.Color=clgray then
Shape13.Brush.Color:= clwhite
else
shape13.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape10MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape10.Brush.Color=clgray then
Shape10.Brush.Color:= clwhite
else
shape10.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape15MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape15.Brush.Color=clgray then
Shape15.Brush.Color:= clwhite
else
shape15.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape2.Brush.Color=clgray then
Shape2.Brush.Color:= clwhite
else
shape2.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape3.Brush.Color=clgray then
Shape3.Brush.Color:= clwhite
else
shape3.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape5.Brush.Color=clgray then
Shape5.Brush.Color:= clwhite
else
shape5.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape1.Brush.Color=clgray then
Shape1.Brush.Color:= clwhite
else
shape1.Brush.Color:=clgray;
end;
procedure TPagesDlg.Shape4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if
shape4.Brush.Color=clgray then
Shape4.Brush.Color:= clwhite
else
shape4.Brush.Color:=clgray;
end;
procedure TPagesDlg.DBImage1Click(Sender: TObject);
begin
if OpdFoto.Execute = true then;
DBImage1.Picture.LoadFromFile(OpdFoto.FileName);
end;
end.
Delson
Curtidas 0
Respostas
Danielnc
11/01/2004
Oi,
eu também sou iniciante no Delphi, mas talvez possa ajudá-lo. Repare que a mensagem exibida é: DATASET not in insert or edit mode. Parece que vc está usando tabela... Clica no DataSource que vc está usando. Veja nas propriedades qual é o DATASET e antes de modificar qualquer campo execute a função ´.edit´ ou ´.insert´ do dataset...
Espero que isso ajude,
ass. Daniel
eu também sou iniciante no Delphi, mas talvez possa ajudá-lo. Repare que a mensagem exibida é: DATASET not in insert or edit mode. Parece que vc está usando tabela... Clica no DataSource que vc está usando. Veja nas propriedades qual é o DATASET e antes de modificar qualquer campo execute a função ´.edit´ ou ´.insert´ do dataset...
Espero que isso ajude,
ass. Daniel
GOSTEI 0
Bacalhau
11/01/2004
Estimado delson, grande código esse!!! :lol:
parece-me que o problema está aqui
If ADOTClientesNomCli.AsString<> ´´ then
begin
if not (DSOdonto.state in [dsEdit, dsInsert]) then DSOdonto.edit;
ADOTClientes.Post;
ADOTOdonto.Post;
end
else ShowMessage(´Faltam dados para efetivar o cadastro!! Insira nome do cliente.´);
Repara: tu colocas DSOdonto em modo de edição (DSOdonto.edit;)
Mas a seguir fazes ADOTClientes.Post;
Um post dá erro se não for precedido de edit. Sugiro que coloques
ADOTClientes.Edit; antes de ADOTClientes.Post;
Como o código é muito grande não vi se havia mais situações destas. Mas é olhar com mais cuidado e garantir que se faço um post, ele tem de ser precedido por um edit.
Acho que é isso
parece-me que o problema está aqui
If ADOTClientesNomCli.AsString<> ´´ then
begin
if not (DSOdonto.state in [dsEdit, dsInsert]) then DSOdonto.edit;
ADOTClientes.Post;
ADOTOdonto.Post;
end
else ShowMessage(´Faltam dados para efetivar o cadastro!! Insira nome do cliente.´);
Repara: tu colocas DSOdonto em modo de edição (DSOdonto.edit;)
Mas a seguir fazes ADOTClientes.Post;
Um post dá erro se não for precedido de edit. Sugiro que coloques
ADOTClientes.Edit; antes de ADOTClientes.Post;
Como o código é muito grande não vi se havia mais situações destas. Mas é olhar com mais cuidado e garantir que se faço um post, ele tem de ser precedido por um edit.
Acho que é isso
GOSTEI 0
Carlosrm
11/01/2004
delson,
1) Na procedure abaixo, acrescente a linha colorida e compile e execute:
procedure TPagesDlg.B_SalvarClick(Sender: TObject);
begin
If ADOTClientesNomCli.AsString<> ´´ then
begin
[color=red:6550be24b6]if not (DSClientes.state in [dsEdit, dsInsert]) then DSClientes.edit;[/color:6550be24b6]
if not (DSOdonto.state in [dsEdit, dsInsert]) then DSOdonto.edit;
ADOTClientes.Post;
ADOTOdonto.Post;
end
else ShowMessage(´Faltam dados para efetivar o cadastro!! Insira nome do cliente.´);
end;
2) Vc não conseguirá alterar manualmente o valor de codcli, pois ele está definido como AutoIncremento/AutoNumeração na tabela ( ADOTClientesCodCli: TAutoIncField;) , ou seja, a cada nova inclusão, o próprio sistema acrescenta 1 ao último código gravado. Vc terá que redefinir o tipo deste campo na tabela (mude para inteiro longo) e depois disso, no Delphi, entre no FieldsEditor do seu dataset e exclua o campo codcli e depois inclua novamente. Talvez precise fechar e abrir o dataset para gravar a alteração. Depois compile e execute.
2) Alternativa: Deixar como está o campo codcli (permanece como AutoIncremento), mas exclua todas as alterações manuais (edição) que vc estava fazendo no campo codcli (pode estar no evento beforepost, onnewrecord...)
Boa sorte. carlosrm :wink:
1) Na procedure abaixo, acrescente a linha colorida e compile e execute:
procedure TPagesDlg.B_SalvarClick(Sender: TObject);
begin
If ADOTClientesNomCli.AsString<> ´´ then
begin
[color=red:6550be24b6]if not (DSClientes.state in [dsEdit, dsInsert]) then DSClientes.edit;[/color:6550be24b6]
if not (DSOdonto.state in [dsEdit, dsInsert]) then DSOdonto.edit;
ADOTClientes.Post;
ADOTOdonto.Post;
end
else ShowMessage(´Faltam dados para efetivar o cadastro!! Insira nome do cliente.´);
end;
2) Vc não conseguirá alterar manualmente o valor de codcli, pois ele está definido como AutoIncremento/AutoNumeração na tabela ( ADOTClientesCodCli: TAutoIncField;) , ou seja, a cada nova inclusão, o próprio sistema acrescenta 1 ao último código gravado. Vc terá que redefinir o tipo deste campo na tabela (mude para inteiro longo) e depois disso, no Delphi, entre no FieldsEditor do seu dataset e exclua o campo codcli e depois inclua novamente. Talvez precise fechar e abrir o dataset para gravar a alteração. Depois compile e execute.
2) Alternativa: Deixar como está o campo codcli (permanece como AutoIncremento), mas exclua todas as alterações manuais (edição) que vc estava fazendo no campo codcli (pode estar no evento beforepost, onnewrecord...)
Boa sorte. carlosrm :wink:
GOSTEI 0
Delson
11/01/2004
Oi,
eu também sou iniciante no Delphi, mas talvez possa ajudá-lo. Repare que a mensagem exibida é: DATASET not in insert or edit mode. Parece que vc está usando tabela... Clica no DataSource que vc está usando. Veja nas propriedades qual é o DATASET e antes de modificar qualquer campo execute a função ´.edit´ ou ´.insert´ do dataset...
Espero que isso ajude,
ass. Daniel
Caro amigo daniel.
Agradeço seu interesse e colaboração, porém tentei resolver o problema da forma como vc sugeriu e não funcionou.
Se tiver mais alguma dica fico muito agradecido...
GOSTEI 0
Delson
11/01/2004
Estimado delson, grande código esse!!! :lol:
parece-me que o problema está aqui
If ADOTClientesNomCli.AsString<> ´´ then
begin
if not (DSOdonto.state in [dsEdit, dsInsert]) then DSOdonto.edit;
ADOTClientes.Post;
ADOTOdonto.Post;
end
else ShowMessage(´Faltam dados para efetivar o cadastro!! Insira nome do cliente.´);
Repara: tu colocas DSOdonto em modo de edição (DSOdonto.edit;)
Mas a seguir fazes ADOTClientes.Post;
Um post dá erro se não for precedido de edit. Sugiro que coloques
ADOTClientes.Edit; antes de ADOTClientes.Post;
Como o código é muito grande não vi se havia mais situações destas. Mas é olhar com mais cuidado e garantir que se faço um post, ele tem de ser precedido por um edit.
Acho que é isso
Prezado companheiro.
Este código é um extrato do meu projeto de final de curso técnico do Senac (dois anos).
Agradeço muito seu interesse em auxiliar a resolver o problema. Tentei resolver da froma como vc mencionou, porém o erro continua. Acho que o problema está qdo da inserção ou alteração no ADOTOdonto (a 2ª tabela).
Se tiveres mais alguma sugestão fico muito grato.
GOSTEI 0
Delson
11/01/2004
delson,
1) Na procedure abaixo, acrescente a linha colorida e compile e execute:
procedure TPagesDlg.B_SalvarClick(Sender: TObject);
begin
If ADOTClientesNomCli.AsString<> ´´ then
begin
[color=red:81c06ffcc7]if not (DSClientes.state in [dsEdit, dsInsert]) then DSClientes.edit;[/color:81c06ffcc7]
if not (DSOdonto.state in [dsEdit, dsInsert]) then DSOdonto.edit;
ADOTClientes.Post;
ADOTOdonto.Post;
end
else ShowMessage(´Faltam dados para efetivar o cadastro!! Insira nome do cliente.´);
end;
2) Vc não conseguirá alterar manualmente o valor de codcli, pois ele está definido como AutoIncremento/AutoNumeração na tabela ( ADOTClientesCodCli: TAutoIncField;) , ou seja, a cada nova inclusão, o próprio sistema acrescenta 1 ao último código gravado. Vc terá que redefinir o tipo deste campo na tabela (mude para inteiro longo) e depois disso, no Delphi, entre no FieldsEditor do seu dataset e exclua o campo codcli e depois inclua novamente. Talvez precise fechar e abrir o dataset para gravar a alteração. Depois compile e execute.
2) Alternativa: Deixar como está o campo codcli (permanece como AutoIncremento), mas exclua todas as alterações manuais (edição) que vc estava fazendo no campo codcli (pode estar no evento beforepost, onnewrecord...)
Boa sorte. carlosrm :wink:
Prezado amigo Carlos.
Implentei sua sugestão porém no funcionou. Acho que o problema está qdo é necessário o programa alterar ou inserir os dados na 2ª Tabela(ADOTOdonto). Problemas do BD Access/ADODelphi.
Apesar das particularidades do Access(queima de codigo) Preferi que o CodCli seja AutoIncremento.
Ficarei muito agradecido se tiver mais alguma dica.
GOSTEI 0