TSQLDataSet ou TClientDataSet?
Galera,
estou em dúvida em qual componente devo dar o insert.
TSQLDataSet ou TClientDataSet?
Estou utilizando da seguinte maneira:
TSQLConnection > TSQLDataSet > TDataSetProvider > TClientDataSet > TDataSource
estou em dúvida em qual componente devo dar o insert.
TSQLDataSet ou TClientDataSet?
Estou utilizando da seguinte maneira:
TSQLConnection > TSQLDataSet > TDataSetProvider > TClientDataSet > TDataSource
Fábio Banhos
Curtidas 0
Respostas
Marco Salles
19/02/2012
Se for no aplicativo (cliente) voce deve dar no CDS
Clientdataset.append >>> clientdataset.post >> clientDataSet.ApplayUpdates(0);
se for na camada do servidor voce vai utilizar intruções Sql .. Insert Into configurado no TSqldataSet
quando na Applicação abri e fechar o clientDataSet , por meiuo do DataSetprovider , ele resolvera
o Insert Into que esta na Camada do servidor de Aplicação
ps) Alguns utilizam o commandText do Clientdataset em conjunto com a devida configuração do
datasetProvider para executar Sql no Banco . esta prática não é aconselhável numa estrtura DataSnap
Lugar de Sql é no servidor de aplicação e não no Cliente
ps) sobre o tópico
https://www.devmedia.com.br/forum/delphi/412957-Verificando-o-tipo-do-campo-selecionado-no-DBGrid.html
voce não consegui resolver ????
Clientdataset.append >>> clientdataset.post >> clientDataSet.ApplayUpdates(0);
se for na camada do servidor voce vai utilizar intruções Sql .. Insert Into configurado no TSqldataSet
quando na Applicação abri e fechar o clientDataSet , por meiuo do DataSetprovider , ele resolvera
o Insert Into que esta na Camada do servidor de Aplicação
ps) Alguns utilizam o commandText do Clientdataset em conjunto com a devida configuração do
datasetProvider para executar Sql no Banco . esta prática não é aconselhável numa estrtura DataSnap
Lugar de Sql é no servidor de aplicação e não no Cliente
ps) sobre o tópico
https://www.devmedia.com.br/forum/delphi/412957-Verificando-o-tipo-do-campo-selecionado-no-DBGrid.html
voce não consegui resolver ????
GOSTEI 0
Fábio Banhos
19/02/2012
Cara,
eu sempre trabalhei com Delphi conectado ao SQL Server utilizando componentes ADO.
Agora estou tendo a necessidade de trabalhar com o Firebird e para conectar ao banco estou utilizando componentes dbExpress.
Para conectar ao banco SQL Server utilizando ADO faço da seguinte maneira:
ADOConnection > ADOQuery > DataSource
- Conecto o ADOConnection ao banco.
- Faço referencia do ADOConnection na ADOQuery.
- Coloco o comando SQL na ADOQuery.
- Faço referencia da ADOQuery no DataSource
Assim, quando quero inserir um novo registro, eu simplesmente faço o comando ADOQuery.Insert.
Mas agora, com o dbExpress estou em duvida como faço isso. Estou fazendo da seguinte maneira:
TSQLConnection > TSQLDataSet > TDataSetProvider > TClientDataSet > TDataSource
- Conecto o TSQLConnection ao banco.
- Faço referencia do TSQLConnection ao TSQLDataSet.
- Faço o comando SQL no TSQLDataSet.
- Faço referencia do TSQLDataSet no TDataSetProvider.
- Faço referencia do TDataSetProvider no TClientDataSet
- E faço referencia do TClientDataSet no TDataSource.
Quando necessário pegar valor de algum campo, estou pegando do TClientDataSet:
VARIAVEL := TClientDataSet.FieldByName(CAMPO).AsString;
E para inserir um novo registro, estou fazendo o comando TClientDataSet.Insert.
Fazendo assim o programa está compilando normalmente, mas quando clico em Salvar os dados aparentemente não estão sendo guardados.
Dou um close e open no TSQLDataSet e no TClientDataSet para ver se atualiza os dados mas não acontece nada.
Com todas as informações acima, aparentemente estou fazendo certo e só mes descuidei com o TClientDataSet.Post?
Tens algumas dicas e macetes que pode me ajudar a entender melhor?
eu sempre trabalhei com Delphi conectado ao SQL Server utilizando componentes ADO.
Agora estou tendo a necessidade de trabalhar com o Firebird e para conectar ao banco estou utilizando componentes dbExpress.
Para conectar ao banco SQL Server utilizando ADO faço da seguinte maneira:
ADOConnection > ADOQuery > DataSource
- Conecto o ADOConnection ao banco.
- Faço referencia do ADOConnection na ADOQuery.
- Coloco o comando SQL na ADOQuery.
- Faço referencia da ADOQuery no DataSource
Assim, quando quero inserir um novo registro, eu simplesmente faço o comando ADOQuery.Insert.
Mas agora, com o dbExpress estou em duvida como faço isso. Estou fazendo da seguinte maneira:
TSQLConnection > TSQLDataSet > TDataSetProvider > TClientDataSet > TDataSource
- Conecto o TSQLConnection ao banco.
- Faço referencia do TSQLConnection ao TSQLDataSet.
- Faço o comando SQL no TSQLDataSet.
- Faço referencia do TSQLDataSet no TDataSetProvider.
- Faço referencia do TDataSetProvider no TClientDataSet
- E faço referencia do TClientDataSet no TDataSource.
Quando necessário pegar valor de algum campo, estou pegando do TClientDataSet:
VARIAVEL := TClientDataSet.FieldByName(CAMPO).AsString;
E para inserir um novo registro, estou fazendo o comando TClientDataSet.Insert.
Fazendo assim o programa está compilando normalmente, mas quando clico em Salvar os dados aparentemente não estão sendo guardados.
Dou um close e open no TSQLDataSet e no TClientDataSet para ver se atualiza os dados mas não acontece nada.
Com todas as informações acima, aparentemente estou fazendo certo e só mes descuidei com o TClientDataSet.Post?
Tens algumas dicas e macetes que pode me ajudar a entender melhor?
GOSTEI 0
Marco Salles
19/02/2012
Fazendo assim o programa está compilando normalmente, mas quando clico em Salvar os dados aparentemente não estão sendo guardados.
Dou um close e open no TSQLDataSet e no TClientDataSet para ver se atualiza os dados mas não acontece nada.
Com todas as informações acima, aparentemente estou fazendo certo e só mes descuidei com o TClientDataSet.Post?
Tens algumas dicas e macetes que pode me ajudar a entender melhor?
È assim , nesta arquitetura os Dados ficam na memória . O Post não Aplica essa atualização no Banco
Voce deve editar , inserir , deletar utlizando o CDS , depois para aplicar estas modificações que estão
no Delta do Cds e sera enviado ao datasetProvider , voce tem que dar um APPLAYUPDATES(0)
Agora se tiver algum erro , vc não conseguirá aplicar , vc acha que foi mas não foi
Tem que utilizar o Evento OnReconcileError do Cds (ou evebtos do DataSetProvider Prefiro)
para ver se houve algum erro. Pois a Exceção lançada no ApplayUpdates é selenciosa
Voce pode testar tb
if cds.ApplayUpdates(0) = 0 then
significa que não deu erro .. Ai com certeza os dados foram aplicados
else
xiiiiiiiiiiiii
Dou um close e open no TSQLDataSet e no TClientDataSet para ver se atualiza os dados mas não acontece nada.
Com todas as informações acima, aparentemente estou fazendo certo e só mes descuidei com o TClientDataSet.Post?
Tens algumas dicas e macetes que pode me ajudar a entender melhor?
È assim , nesta arquitetura os Dados ficam na memória . O Post não Aplica essa atualização no Banco
Voce deve editar , inserir , deletar utlizando o CDS , depois para aplicar estas modificações que estão
no Delta do Cds e sera enviado ao datasetProvider , voce tem que dar um APPLAYUPDATES(0)
Agora se tiver algum erro , vc não conseguirá aplicar , vc acha que foi mas não foi
Tem que utilizar o Evento OnReconcileError do Cds (ou evebtos do DataSetProvider Prefiro)
para ver se houve algum erro. Pois a Exceção lançada no ApplayUpdates é selenciosa
Voce pode testar tb
if cds.ApplayUpdates(0) = 0 then
significa que não deu erro .. Ai com certeza os dados foram aplicados
else
xiiiiiiiiiiiii
GOSTEI 0