 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sáb Fev 03, 2007 10:18 am Assunto: Qual a vantagem de gravar dados usando CDS? |
|
|
Olah pessoal, a duvida agora seria, como passar para o banco de dados um resultado de gravaçao de um CDS (ClientDataSet)?
Mais primeiro quero saber se tem algum maçete para criar campos no CDS:
Fiz assim
1º fui na propriedades FieldDefs e coloquei alguns campos string
2º botao direito do mouse sobre o componente usei a opção Create DataSet
Bom ateh ai tudo certo, joguei os campos para o field editor do ClientDataSet, mais ai na hora de ativar apareceu o seguinte erro ClientDataSet Missing Data Provider or Data Packet
Resolvi colocar o componente DataSet Provider no form tambem e liga-lo ao ClientDataSet. Nao configurei nada no DataSetProvider.
Mais ai apareçe um novo erro
Circular provider references not allowed
Bom como estou usando o Delphi 5 estou usando estes componentes da paleta Midas
***************************************************
Bom + ou - sei que usando a CDS tambem eh assim como o ibTable, mais me pareçe que tem que usar o ApplyUpdates para transferir os dados pra tabela.
Bom a ideia a principio eh usar CDS pq creio eu que diminua o trafego na rede pq os Tables nao sao aconselhavel para trabalhar em rede(segundo dizem), como eu nunca trabalhei com CDS nao sei se eh vantagem ou nao, pois gosto mesmo eh de usar para um tipo assim Stored Procedure(SP), mais nao consegui de forma alguma executar os parametros desta forma por SP e tambem nao consegui usando o ibQuery, acusa erro. Somnete consigo usando ibTable ou CDS., mais o CDS soh consegui mostrar o resultado na grade assim que eu saio do form ela apaga, me parece segundo andei lendo eh pq o CDS grava em memoria, pra depois passar para o banco. (Nao sei se eh verdade).
Bom galera soh pra informar estou usando a paleta IBX e firebird 2.0, e Delphi 5 (O codigo como gravo no ibtable esta logo abaixo para caber aqui, se nao da erro no post) _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Editado pela última vez por adriano_servitec em Sáb Fev 03, 2007 3:06 pm, num total de 3 vezes |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sáb Fev 03, 2007 10:21 am Assunto: |
|
|
Estou usando um ibTable assim (o codigo foi reduzido pq esta dando erro na hora de postar aqui no forum)
Código: | procedure TFTodoMes.btnGravarClick(Sender: TObject);
var i, n: SmallInt;
begin
//**********COMEÇO DA GRAVAÇAO DE DADOS USANDO IBTABLE****
N := ComponentCount;
for I := 0 to N-1 do
begin
if (Components[I] is TEdit) AND ((Components[I] as TEdit).Tag > 0) AND ((Components[I] as TEdit).Tag < 15) and ((Components[I] as TEdit).Text <> '') then
begin
dm.IBTodoMes.Append; {para incluir na Tabela usando um DataSet}
{passando os dados do edit para o DataSet}
dm.IBTodoMesano.Value := edtAno.Text;
dm.IBTodoMesConta_D.Value := edtDebito.Text;
dm.IBTodoMesConta_C.Value := edtCredito.Text;
dm.IBTodoMesMes.Value := (Components[I] as TEdit).Tag;
dm.IBTodoMesHistorico.Value := edtHistorico.Text;
{SValor deixei como variavel Global - Variavel sValor recebendo o valor que contem no componente edtValorPadrao}
sValor := edtValorPadrao.Text;
{transforma a variavel sValor para receber valores com ponto e virgula tipo 1.000,00}
sValor := stringreplace(sValor, '.', '', [rfReplaceAll]);
{Case recebendo a variavel sValor}
Case (Components[I] as TEdit).Tag of
1: DM.IBTodoMesValor.Value := StrToCurr( sValor );
2: DM.IBTodoMesValor.Value := StrToCurr( sValor );
3: DM.IBTodoMesValor.Value := StrToCurr( sValor );
4: DM.IBTodoMesValor.Value := StrToCurr( sValor );
5: DM.IBTodoMesValor.Value := StrToCurr( sValor );
end;
try
dm.IBTodoMes.Post; {para gravar na tabela}
if not dm.tLConta.InTransaction then dm.tLConta.StartTransaction; // Reinicia o transaction
dm.tLConta.CommitRetaining;
DM.IBQTODOMES.Close; //ATUALIZA A QUERY DA GRADE
DM.IBQTODOMES.Sql.Clear;
DM.IBQTODOMES.Sql.Add('select * from todomesconta order by sequencia desc');
DM.IBQTODOMES.Open;
except
on E:Exception do
begin
dm.TLConta.RollBackRetaining; //Rollback no Trasaction
ShowMessage('Falha na Inclusão dos Dados!'#13#10' Mensagem: '+E.Message);
end;
end;//final do try/except
end;
end;
end; |
_________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|