if Operacao='incluir' then begin frmFornecedor.ADOTable1.Append; frmFornecedor.ADOTable1Codigo.Value := Codigo; frmFornecedor.PageControl1.ActivePageIndex :=
end coloque o post no botão gravar. _____ De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Eduardo Enviada em: quarta-feira, 21 de abril de 2010 16:48 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] Problema no ADOTable com Delphi 2010 Boa tarde, Pessoal Montei um formulário com um PageControl e 3 TabSheets, na primeira coloquei um DBGrid, DBNavigator(invisivel) e criei um botão incluir, quando clicado ele seta a TabSheet2, onde eu tenho vários DBEdit's, nessa hora eu crio um código (tenho uma função SOMA1) e preencho o DBEdit do código, seto o foco para o próximo campo e continuo preenchendo os demais, quando clico no botão gravar, dá um erro no banco pq não é permitido gravar nulo. Como eu devo atribuir esse valor? Olha o código aqui... Tem um monte de linhas que eram testes para tentar fazer funcionar... unit uFornecedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, ComCtrls, DBCtrls, Mask, DB, ADODB; type TfrmFornecedor = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; Panel1: TPanel; Panel2: TPanel; DBGrid1: TDBGrid; Panel3: TPanel; Excluir: TBitBtn; Alterar: TBitBtn; Incluir: TBitBtn; ComboBox1: TComboBox; Edit1: TEdit; BitBtn4: TBitBtn; Label1: TLabel; Label2: TLabel; Panel4: TPanel; Memo1: TMemo; DataSource1: TDataSource; ADOConnection1: TADOConnection; ADOTable1: TADOTable; DBNavigator1: TDBNavigator; ADOTable1Filial: TStringField; ADOTable1Codigo: TStringField; ADOTable1Razao: TStringField; ADOTable1CNPJ: TStringField; ADOTable1IE: TStringField; ADOTable1Endereco: TStringField; ADOTable1Complemento: TStringField; ADOTable1Bairro: TStringField; ADOTable1Municipio: TStringField; ADOTable1Estado: TStringField; ADOTable1CEP: TStringField; ADOTable1Email: TStringField; ADOTable1Obs: TMemoField; Label3: TLabel; DBEdit1: TDBEdit; Label4: TLabel; DBEdit2: TDBEdit; Label5: TLabel; DBEdit3: TDBEdit; Label6: TLabel; DBEdit4: TDBEdit; Label7: TLabel; DBEdit5: TDBEdit; Label8: TLabel; DBEdit6: TDBEdit; Label9: TLabel; DBEdit7: TDBEdit; Label10: TLabel; DBEdit8: TDBEdit; Label11: TLabel; DBEdit9: TDBEdit; Label12: TLabel; DBEdit10: TDBEdit; Label13: TLabel; DBEdit11: TDBEdit; Label14: TLabel; DBMemo1: TDBMemo; BitBtn1: TBitBtn; procedure IncluirClick(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure DBMemo1Exit(Sender: TObject); procedure BitBtn1Click(Sender: TObject); // O erro é aqui !!! <<<<------------------------------------|||| //Function TfrmFornecedor.Soma1(Num:Integer):String; // O erro é aqui !!! <<<<------------------------------------|||| private { Private declarations } public { Public declarations } end; var frmFornecedor: TfrmFornecedor; Operacao,Codigo: String; implementation {$R *.dfm} Function Soma1(Num:integer):String; //Var Result : String; Begin // O Tamanho do numero de saida sempre será 9 digitos Num := Num + 1; if Length(IntToStr(Num))=1 then Result := '00000000'+IntToStr(Num); if Length(IntToStr(Num))=2 then Result := '0000000'+IntToStr(Num); if Length(IntToStr(Num))=3 then Result := '000000'+IntToStr(Num); if Length(IntToStr(Num))=4 then Result := '00000'+IntToStr(Num); if Length(IntToStr(Num))=5 then Result := '0000'+IntToStr(Num); if Length(IntToStr(Num))=6 then Result := '000'+IntToStr(Num); if Length(IntToStr(Num))=7 then Result := '00'+IntToStr(Num); if Length(IntToStr(Num))=8 then Result := '0'+IntToStr(Num); if Length(IntToStr(Num))=9 then Result := IntToStr(Num); if Length(IntToStr(Num))>9 then Begin ShowMessage('Erro função SOMA1'); Result := '*********' End; End; procedure TfrmFornecedor.BitBtn1Click(Sender: TObject); begin if Operacao='incluir' then begin frmFornecedor.ADOTable1Codigo.Value := Codigo; frmFornecedor.ADOTable1.Append; frmFornecedor.ADOTable1.Post; frmFornecedor.PageControl1.ActivePageIndex := 0; end; end; procedure TfrmFornecedor.DBMemo1Exit(Sender: TObject); begin frmFornecedor.BitBtn1.Enabled := True; end; procedure TfrmFornecedor.FormKeyPress(Sender: TObject; var Key: Char); begin //verifica se a tecla pressionada é a tecla ENTER, conhecida pelo Delphi como #13 If key = #13 then Begin //se for, passa o foco para o próximo campo, zerando o valor da variável Key Key:= #0; Perform(Wm_NextDlgCtl,0,0); end; end; procedure TfrmFornecedor.IncluirClick(Sender: TObject); Var CodFor: integer; begin Operacao := 'incluir'; // Inclusão de Fornecedor //************************************************** // dar foco a página do registro frmFornecedor.PageControl1.ActivePageIndex := 1; frmFornecedor.BitBtn1.Enabled := false; // Calcular o código do novo registro if frmFornecedor.ADOTable1.IsEmpty then Begin CodFor := 0; frmFornecedor.DBEdit1.Text := Soma1(CodFor); End Else Begin frmFornecedor.ADOTable1.Last; CodFor := StrtoInt(frmFornecedor.ADOTable1Codigo.Value); frmFornecedor.DBEdit1.Text :=Soma1(CodFor); frmFornecedor.ADOTable1Codigo.Value :=frmFornecedor.DBEdit1.Text; Codigo := frmFornecedor.DBEdit1.Text; frmFornecedor.DBEdit1.ReadOnly:= true; frmFornecedor.DBEdit2.SetFocus; //frmFornecedor.TabSheet1.Enabled:=false; End; end; end. O Erro que tá dando agora é que não posso alterar o conteúdo do campo código, depois que coloquei a seguinte linha no bitbtn1.click: frmFornecedor.ADOTable1Codigo.Value := Codigo; [As partes desta mensagem que não continham texto foram removidas]