Pessoal:
Estou precisando de ajuda no seguinte problema que não estou conseguindo resolver no Delphi 7. Estou usando o Interbase 6 e os seguintes componentes da paleta Interbase do Delphi 7:
IBDATABASE
IBTRANSACTION
IBTABLE
E da paleta DataAcess o componente
DATASOURCE
Todos os componentes estão ligados certamente.
O IBDATABASE ligado corretamente ao banco de Dados, pois se vê na propriedade allowstreamedConnected como TRUE e a propriedade connected também como TRUE.
Aqui na propriedade do IBTRANSACTION na figura abaixo a proriedade ACTIVE também está como TRUE.
E tenho algumas tabelas no DATAMODULE que também estão ligadas certamente sendo que na propriedade ACTIVE está como TRUE.
Agora eu tenho as seguintes tabelas feitas no IBOCONSOLE DO INTERBASE
Essa é a tabela de origem.
CREATE TABLE "TBL_ENTRADA_PRODUTO_ESTOQUE"
(
"ID_CODIGO_ENTRADA_PRODUTO" INTEGER NOT NULL,
"ID_DT_ENTRADA_DO_PRODUTO" TIMESTAMP,
"ID_HR_ENTRADA_DO_PRODUTO" TIME,
"ID_DESCRICAO_PRODUTO" VARCHAR(60) CHARACTER SET WIN1252 NOT NULL,
"ID_QUANTIDADE_ENTRADA_ESTOQUE" NUMERIC(10, 2) NOT NULL,
"ID_NOME_FORNECEDOR" VARCHAR(80) CHARACTER SET WIN1252 NOT NULL,
"ID_NOTA_FISCAL_FORNECEDOR" VARCHAR(10) CHARACTER SET WIN1252,
"ID_OBSERVACAO" VARCHAR(50) CHARACTER SET WIN1252,
CONSTRAINT "CODIGOENTRADAPRODUTO_PK" PRIMARY KEY ("ID_CODIGO_ENTRADA_PRODUTO")
);
Essa é a tabela de destino
CREATE TABLE "TBL_CONTROLA_ESTOQUE"
(
"ID_CODIGO_CONTROLA_ESTOQUE" INTEGER NOT NULL,
"ID_CODIGO_PRODUTO" INTEGER,
"ID_DESCRICAO_PRODUTO" VARCHAR(60) CHARACTER SET WIN1252,
"ID_ESTOQUE_ATUAL" INTEGER,
"ID_ESTOQUE_MINIMO" INTEGER,
"ID_ESTOQUE_MAXIMO" INTEGER,
"ID_CUSTO_UNITARIO" NUMERIC(10, 2),
"ID_CUSTO_VENDA" NUMERIC(10, 2),
CONSTRAINT "CODIGOCONTROLAESTOQUE_PK" PRIMARY KEY ("ID_CODIGO_CONTROLA_ESTOQUE")
);
O que eu preciso é o seguinte:
Quero/Preciso transferir o que for digitado no campo "ID_QUANTIDADE_ENTRADA_ESTOQUE" da tabela TBL_ENTRADA_PRODUTO_ESTOQUE para o campo "ID_ESTOQUE_ATUAL" da tabela TBL_CONTROLA_ESTOQUE
Detalhe do código que fiz no Delphi 7 no events do onclick do botão salvar:
// início do código no delphi 7 //
var
i: Integer;
nomedocampo:String;
begin
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.F irst;
while not
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.E of do
begin
DM_DadosEntradaDeProdutoEstoque.ChamaControlaEstoq ue.Append;
for i := 0 to
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.F ieldCount - 1 do
begin
nomedocampo:=DM_DadosEntradaDeProdutoEstoque.Entra daDeProduto.Fields[i].FieldName;
DM_DadosEntradaDeProdutoEstoque.ChamaControlaEstoq ue.FieldByName('ID_ESTOQUE_ATUAL').Value:=
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.F ieldByName('ID_QUANTIDADE_ENTRADA_ESTOQUE').Value;
end;
DM_DadosEntradaDeProdutoEstoque.ChamaControlaEstoq ue.Post;
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.N ext;
end;
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.P ost;
tbsConsultaEntradaDeProduto.TabVisible:=True;
tbsCadastraEntradaDeProduto.TabVisible:=False;
if DM_DadosEntradaDeProdutoEstoque.TransacaoAcessaBas eDeDadosEntradaEstoque.InTransaction then// procedimento de iníco do processo de transação//
DM_DadosEntradaDeProdutoEstoque.TransacaoAcessaBas eDeDadosEntradaEstoque.CommitRetaining// para gravação no banco de dados Produto//
else// caso contrário//
DM_DadosEntradaDeProdutoEstoque.TransacaoAcessaBas eDeDadosEntradaEstoque.RollbackRetaining;//se for acionado o cancelamento das novas informações, essas informações, não serão gravadas no banco de dados Produto//
end;
// final do código no delphi 7 //
O programa roda sem problemas mas quando eu vou salvar o registro acontece o seguinte problema.
Project ProjetoSistemaEmpresa.exe raised exception class EIBInterbaseError with message ‘Validation error for column ID_CODIGOCONTROLA_ESTOQUE, value ‘***nul***’, process stoped
ALGUÉM SABE COMO RESOLVO ESSE PROBLEMA, POR FAVOR.
SE FOR POSSÍVEL ME ENVIE O PASSO A PASSO PARA A SOLUÇÃO.
NA TABELA DE ORIGEM "TBL_ENTRADA_PRODUTO_ESTOQUE" OS REGISTROS SÃO AUTOMÁTICOS E NOT NULL QUE FIZ VIA PROGRAMAÇÃO DIRETO CÓDIGO NO PRÓPRIO DELPHI 7.
NA TABELA DE DESTINO "TBL_CONTROLA_ESTOQUE" OS REGISTROS NÃO SÃO AUTOMÁTICOS DEVIDO SER APENAS UMA TABELA PARA CONTROLAR O QUE ENTRA E SAI DE PRODUTOS.
ATÉ MAIS.
Estou precisando de ajuda no seguinte problema que não estou conseguindo resolver no Delphi 7. Estou usando o Interbase 6 e os seguintes componentes da paleta Interbase do Delphi 7:
IBDATABASE
IBTRANSACTION
IBTABLE
E da paleta DataAcess o componente
DATASOURCE
Todos os componentes estão ligados certamente.
O IBDATABASE ligado corretamente ao banco de Dados, pois se vê na propriedade allowstreamedConnected como TRUE e a propriedade connected também como TRUE.
Aqui na propriedade do IBTRANSACTION na figura abaixo a proriedade ACTIVE também está como TRUE.
E tenho algumas tabelas no DATAMODULE que também estão ligadas certamente sendo que na propriedade ACTIVE está como TRUE.
Agora eu tenho as seguintes tabelas feitas no IBOCONSOLE DO INTERBASE
Essa é a tabela de origem.
CREATE TABLE "TBL_ENTRADA_PRODUTO_ESTOQUE"
(
"ID_CODIGO_ENTRADA_PRODUTO" INTEGER NOT NULL,
"ID_DT_ENTRADA_DO_PRODUTO" TIMESTAMP,
"ID_HR_ENTRADA_DO_PRODUTO" TIME,
"ID_DESCRICAO_PRODUTO" VARCHAR(60) CHARACTER SET WIN1252 NOT NULL,
"ID_QUANTIDADE_ENTRADA_ESTOQUE" NUMERIC(10, 2) NOT NULL,
"ID_NOME_FORNECEDOR" VARCHAR(80) CHARACTER SET WIN1252 NOT NULL,
"ID_NOTA_FISCAL_FORNECEDOR" VARCHAR(10) CHARACTER SET WIN1252,
"ID_OBSERVACAO" VARCHAR(50) CHARACTER SET WIN1252,
CONSTRAINT "CODIGOENTRADAPRODUTO_PK" PRIMARY KEY ("ID_CODIGO_ENTRADA_PRODUTO")
);
Essa é a tabela de destino
CREATE TABLE "TBL_CONTROLA_ESTOQUE"
(
"ID_CODIGO_CONTROLA_ESTOQUE" INTEGER NOT NULL,
"ID_CODIGO_PRODUTO" INTEGER,
"ID_DESCRICAO_PRODUTO" VARCHAR(60) CHARACTER SET WIN1252,
"ID_ESTOQUE_ATUAL" INTEGER,
"ID_ESTOQUE_MINIMO" INTEGER,
"ID_ESTOQUE_MAXIMO" INTEGER,
"ID_CUSTO_UNITARIO" NUMERIC(10, 2),
"ID_CUSTO_VENDA" NUMERIC(10, 2),
CONSTRAINT "CODIGOCONTROLAESTOQUE_PK" PRIMARY KEY ("ID_CODIGO_CONTROLA_ESTOQUE")
);
O que eu preciso é o seguinte:
Quero/Preciso transferir o que for digitado no campo "ID_QUANTIDADE_ENTRADA_ESTOQUE" da tabela TBL_ENTRADA_PRODUTO_ESTOQUE para o campo "ID_ESTOQUE_ATUAL" da tabela TBL_CONTROLA_ESTOQUE
Detalhe do código que fiz no Delphi 7 no events do onclick do botão salvar:
// início do código no delphi 7 //
var
i: Integer;
nomedocampo:String;
begin
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.F irst;
while not
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.E of do
begin
DM_DadosEntradaDeProdutoEstoque.ChamaControlaEstoq ue.Append;
for i := 0 to
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.F ieldCount - 1 do
begin
nomedocampo:=DM_DadosEntradaDeProdutoEstoque.Entra daDeProduto.Fields[i].FieldName;
DM_DadosEntradaDeProdutoEstoque.ChamaControlaEstoq ue.FieldByName('ID_ESTOQUE_ATUAL').Value:=
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.F ieldByName('ID_QUANTIDADE_ENTRADA_ESTOQUE').Value;
end;
DM_DadosEntradaDeProdutoEstoque.ChamaControlaEstoq ue.Post;
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.N ext;
end;
DM_DadosEntradaDeProdutoEstoque.EntradaDeProduto.P ost;
tbsConsultaEntradaDeProduto.TabVisible:=True;
tbsCadastraEntradaDeProduto.TabVisible:=False;
if DM_DadosEntradaDeProdutoEstoque.TransacaoAcessaBas eDeDadosEntradaEstoque.InTransaction then// procedimento de iníco do processo de transação//
DM_DadosEntradaDeProdutoEstoque.TransacaoAcessaBas eDeDadosEntradaEstoque.CommitRetaining// para gravação no banco de dados Produto//
else// caso contrário//
DM_DadosEntradaDeProdutoEstoque.TransacaoAcessaBas eDeDadosEntradaEstoque.RollbackRetaining;//se for acionado o cancelamento das novas informações, essas informações, não serão gravadas no banco de dados Produto//
end;
// final do código no delphi 7 //
O programa roda sem problemas mas quando eu vou salvar o registro acontece o seguinte problema.
Project ProjetoSistemaEmpresa.exe raised exception class EIBInterbaseError with message ‘Validation error for column ID_CODIGOCONTROLA_ESTOQUE, value ‘***nul***’, process stoped
ALGUÉM SABE COMO RESOLVO ESSE PROBLEMA, POR FAVOR.
SE FOR POSSÍVEL ME ENVIE O PASSO A PASSO PARA A SOLUÇÃO.
NA TABELA DE ORIGEM "TBL_ENTRADA_PRODUTO_ESTOQUE" OS REGISTROS SÃO AUTOMÁTICOS E NOT NULL QUE FIZ VIA PROGRAMAÇÃO DIRETO CÓDIGO NO PRÓPRIO DELPHI 7.
NA TABELA DE DESTINO "TBL_CONTROLA_ESTOQUE" OS REGISTROS NÃO SÃO AUTOMÁTICOS DEVIDO SER APENAS UMA TABELA PARA CONTROLAR O QUE ENTRA E SAI DE PRODUTOS.
ATÉ MAIS.