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]

Responder a