DB EXPRESS TSIMPLEDATASET
05/06/2003
0
:twisted:
BOM, EU ESTOU MIGRANDO MINHAS A APLICAÇÕES QUE ESTÃO BASEADAS NA BDE PARA O
DBEXPRESS. E A MINHA GRANDE DIFICULDADE É EM ACHAR UMA SOLUÇÃO PARA ATUALIZAR
MAIS DE UMA TABELA USANDO O TSIMPLEDATASET.
PARA FICAR MAIS CLARO PARA VOCÊ(S) QUE ESTÁ(ÃO) LENDO, EU VOU EXPOR A SEGUIR O
PROBLEMA E DESEJARIA QUE A SOLUÇÃO DADA FOSSE EXPOSTA DA MESMA MANEIRA, O MAIS
CLARA POSSÍVEL:
A APLICAÇÃO RODARÁ EM 2 DUAS CAMADAS (CLIENTE-SERVIDOR)
NUMA BASE DE DADOS DO MSSQL SERVER, EXISTEM DUAS TABELAS QUE FORMAM UMA
ESPECIALIZAÇÃO, SÃO
ELAS:
TB_FORNECEDOR
CODIGO (CHAVE PRIMÁRIA)
NOME
ENDERECO
E
TB_FORNECEDOR_FISICA
CODIGO (CHAVE PRIMÁRIA)
CPF
HÁ TAMBÉM NA BASE DE DADOS, UMA VIEW FAZENDO JOIN NAS DUAS TABELAS QUE É:
VW_FORNECEDOR_FISICA
CODIGO (CHAVE PRIMÁRIA)
NOME
ENDERECO
CPF
A IDÉIA DESTA VIEW É ABSTRAIR A IMPLEMENTAÇÃO NORMALIZADA DAS TABELAS E TRAZER
OS DADOS DO FORNECEDOR PESSOA FÍSICA COMO SE ESTIVESSEM ARMZENADOS EM UMA
TABELA SOMENTE.
PARA FINALIZAR A PARTE REFERENTE AO BANCO DE DADOS, FORAM CRIADAS 3 STORED
PROCEDURES:
SPD_FORNECEDOR_FISICA (EXCLUSÃO)
SPI_FORNECEDOR_FISICA (INCLUSÃO)
SPU_FORNECEDOR_FISICA (ALTERAÇÃO)~
ESTAS STORED PROCEDURES POSSUEM PARÂMETROS QUE SÃO OS CAMPOS PARA QUE OS
REGISTROS SEJAM INCLUÍDOS/EXCLUÍDOS/ALTERADOS NAS DUAS TABELAS, SENDO QUE NAS
SUAS IMPLEMENTAÇÕES (DAS STORED PROC) O CÓDIGO ESTÁ LIMITADO NUMA TRANSAÇÃO.
ISTO IMPEDE, POR EXEMPLO, QUE AO SE TENTAR INCLUIR UM NOVO FORNECEDOR PESSOA
FÍSICA, É FEITO PRIMEIRO UM INSERT NA TABELA TB_FORNECEDOR E DEPOIS NA
TB_FORNECEDOR_FISICA, CASO OCORRA UM ERRO NA INSERÇÃO EM TB_FORNECEDOR_FISICA,
TODA TRANSAÇÃO É DESFEITA.
A IDÉIA TAMBÉM É ABSTRAIR A COMPLEXIDADES NA HORA DE ATUALIZAR OS DADOS.
BOM, AGORA VAMOS A IMPLEMENTAÇÃO NO DELPHI QUE É O QUE INTERESSA:
ATUALMENTE, USANDO OS COMPONENTES DA BDE, EU COLOCARIA EM MEU DATAMODULE UM
COMPONENTE TQUERY COM SEGUINTE CÓDIGO SQL:
´SELECT CODIGO,NOME,ENDERECO,CPF FROM VW_FORNECEDOR_FISICA´
E LIGADO A ELE UM COMPONENTE TUPDATESQL COM AS SEGUINTES
PROPRIEDADES:
INSERTSQL: ´EXEC SPI_FORNECEDOR_FISICA :NOME,:ENDERECO,:CPF´
DELETESQL: ´EXEC SPD_FORNECEDOR_FISICA :OLD_CODIGO´
MODIFYSQL: ´EXEC SPD_FORNECEDOR_FISICA :OLD_CODIGO,:NOME,:ENDERECO,:CPF´
ESTA SOLUÇÃO FUNCIONA PERFEITAMENTE E VENHO USANDO-A HÁ UM BOM TEMPO.
COMO ESTOU MIGRANDO PARA O DBEXPRESS E ESTOU USANDO O TSIMPLEDATASET, GOSTARIA
DE RECEBER UMA RESPOSTA DETALHADA, MOSTRANDO UMA IMPLEMENTAÇÃO PARA O CASO ACIMA USANDO O TSIMPLEDATASET.
ATENCIPADAMENTE AGRADEÇO,
PEDRO SILVA NETO
neto@deso.se.gov.br
BOM, EU ESTOU MIGRANDO MINHAS A APLICAÇÕES QUE ESTÃO BASEADAS NA BDE PARA O
DBEXPRESS. E A MINHA GRANDE DIFICULDADE É EM ACHAR UMA SOLUÇÃO PARA ATUALIZAR
MAIS DE UMA TABELA USANDO O TSIMPLEDATASET.
PARA FICAR MAIS CLARO PARA VOCÊ(S) QUE ESTÁ(ÃO) LENDO, EU VOU EXPOR A SEGUIR O
PROBLEMA E DESEJARIA QUE A SOLUÇÃO DADA FOSSE EXPOSTA DA MESMA MANEIRA, O MAIS
CLARA POSSÍVEL:
A APLICAÇÃO RODARÁ EM 2 DUAS CAMADAS (CLIENTE-SERVIDOR)
NUMA BASE DE DADOS DO MSSQL SERVER, EXISTEM DUAS TABELAS QUE FORMAM UMA
ESPECIALIZAÇÃO, SÃO
ELAS:
TB_FORNECEDOR
CODIGO (CHAVE PRIMÁRIA)
NOME
ENDERECO
E
TB_FORNECEDOR_FISICA
CODIGO (CHAVE PRIMÁRIA)
CPF
HÁ TAMBÉM NA BASE DE DADOS, UMA VIEW FAZENDO JOIN NAS DUAS TABELAS QUE É:
VW_FORNECEDOR_FISICA
CODIGO (CHAVE PRIMÁRIA)
NOME
ENDERECO
CPF
A IDÉIA DESTA VIEW É ABSTRAIR A IMPLEMENTAÇÃO NORMALIZADA DAS TABELAS E TRAZER
OS DADOS DO FORNECEDOR PESSOA FÍSICA COMO SE ESTIVESSEM ARMZENADOS EM UMA
TABELA SOMENTE.
PARA FINALIZAR A PARTE REFERENTE AO BANCO DE DADOS, FORAM CRIADAS 3 STORED
PROCEDURES:
SPD_FORNECEDOR_FISICA (EXCLUSÃO)
SPI_FORNECEDOR_FISICA (INCLUSÃO)
SPU_FORNECEDOR_FISICA (ALTERAÇÃO)~
ESTAS STORED PROCEDURES POSSUEM PARÂMETROS QUE SÃO OS CAMPOS PARA QUE OS
REGISTROS SEJAM INCLUÍDOS/EXCLUÍDOS/ALTERADOS NAS DUAS TABELAS, SENDO QUE NAS
SUAS IMPLEMENTAÇÕES (DAS STORED PROC) O CÓDIGO ESTÁ LIMITADO NUMA TRANSAÇÃO.
ISTO IMPEDE, POR EXEMPLO, QUE AO SE TENTAR INCLUIR UM NOVO FORNECEDOR PESSOA
FÍSICA, É FEITO PRIMEIRO UM INSERT NA TABELA TB_FORNECEDOR E DEPOIS NA
TB_FORNECEDOR_FISICA, CASO OCORRA UM ERRO NA INSERÇÃO EM TB_FORNECEDOR_FISICA,
TODA TRANSAÇÃO É DESFEITA.
A IDÉIA TAMBÉM É ABSTRAIR A COMPLEXIDADES NA HORA DE ATUALIZAR OS DADOS.
BOM, AGORA VAMOS A IMPLEMENTAÇÃO NO DELPHI QUE É O QUE INTERESSA:
ATUALMENTE, USANDO OS COMPONENTES DA BDE, EU COLOCARIA EM MEU DATAMODULE UM
COMPONENTE TQUERY COM SEGUINTE CÓDIGO SQL:
´SELECT CODIGO,NOME,ENDERECO,CPF FROM VW_FORNECEDOR_FISICA´
E LIGADO A ELE UM COMPONENTE TUPDATESQL COM AS SEGUINTES
PROPRIEDADES:
INSERTSQL: ´EXEC SPI_FORNECEDOR_FISICA :NOME,:ENDERECO,:CPF´
DELETESQL: ´EXEC SPD_FORNECEDOR_FISICA :OLD_CODIGO´
MODIFYSQL: ´EXEC SPD_FORNECEDOR_FISICA :OLD_CODIGO,:NOME,:ENDERECO,:CPF´
ESTA SOLUÇÃO FUNCIONA PERFEITAMENTE E VENHO USANDO-A HÁ UM BOM TEMPO.
COMO ESTOU MIGRANDO PARA O DBEXPRESS E ESTOU USANDO O TSIMPLEDATASET, GOSTARIA
DE RECEBER UMA RESPOSTA DETALHADA, MOSTRANDO UMA IMPLEMENTAÇÃO PARA O CASO ACIMA USANDO O TSIMPLEDATASET.
ATENCIPADAMENTE AGRADEÇO,
PEDRO SILVA NETO
neto@deso.se.gov.br
Pedro Neto
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)