[delphi-br] ClientDataSet com comportamento estranho
Olá a todos, estou enfrentado difícil de solucionar, pelo menos pra mim... Vou colocar o código de como estou trabalhando com o clientdataset, quem puder me ajudar agradeço. Resumo do problema: Tenho um formulário de pedido que trabalho com duas tabelas no firebird que são: (pedido e pedido_item) eu uso stored procedure para insert e update nessas tabelas. No form de cadastro de pedido tenho um dbgrid que é adcionado os items do pedido. Quando eu registro um novo pedido ele salva noramalmente, ai logo em seguida se eu clicar em localizar um pedido e seleciona-lo e logo em seguido clicar em novo, eu começo a inserio o produto ele puxa os produtos que foi inserido no pedido anterior não estou entendo mais nada. Vou postar algus código, se alguém já passou por isso e puder me ajudar. Agradeço. {: Procedure para inserir o pedido e os items} procedure TDMPrincipal.InsertPedido; var idPed: Integer; begin // verifica se escolheu produtos if cdsPedidoItem.IsEmpty then raise Exception.Create('É necessário escolher os produtos!'); idPed:= qSequence.FieldByName('VLRSEQ').AsInteger + 1; Start; // Adiciona o pedido try with spPedido do begin Params[0].AsInteger:= cdsPedidoPED_COD.AsInteger; Params[1].AsInteger:= cdsPedidoFUNC_COD.AsInteger; Params[2].AsDate:= cdsPedidoPED_DATA.AsDateTime; Params[3].AsBCD:= cdsPedidoItemTOTALGERAL.AsVariant; Params[4].AsInteger:= cdsPedidoFORN_COD.AsInteger; ExecProc; Commit; //idPed:= Params[4].AsInteger; end; Except Rollback; end; // Adiciona os items try Start; cdsPedidoItem.First; while not cdsPedidoItem.Eof do begin with spPedidoItem do begin Params[0].AsInteger:= idPed; Params[1].AsInteger:= cdsPedidoItemPROD_COD.AsInteger; Params[2].AsInteger:= cdsPedidoItemQUANTIDADE.AsInteger; Params[3].AsBCD:= cdsPedidoItemVALOR.AsCurrency; ExecProc; end; cdsPedidoItem.Next; end; Commit; Except DeletePedido(idPed); Rollback; end; end; No evendo afterpost do clientdataset eu chamo essa procedure; No evendo onnewrecord eu para 0 para o código do pedido. No formulário de pedido tenho os botões de novo salvar alterar localizar Novo: DataSource1.DataSet.Open; DataSource1.DataSet.Insert; Salvar: {: salvo as dados se os campos estiverem preenchidos} if FieldsWrithe(DataSource1) and (DataSource1.State in [dsEdit, dsInsert]) then begin DMPrincipal.cdsPedido.Post; MessageDlg(MSG_OK, mtInformation, [mbOK], 0); end; DMPrincipal.cdsPedido.Close; DMPrincipal.cdsPedidoItem.Close; Alterar: {: habilita/desabilita os componentes e verifica permissões/restrições } if not DataSource1.DataSet.IsEmpty then begin DataSource1.DataSet.Edit; DataSource2.DataSet.Edit; EnableDisableControls(True); end else begin raise Exception.Create('Nenhum pedido foi selecionado!'); end; Localizar: {: verifica se esta em modo de edição ou inserção} if DataSource1.State in [dsEdit, dsInsert] then case MessageDlg('Deseja salvar as alterações realizados no Cadastro?', mtConfirmation, [mbYes,mbNo,mbCancel], 0) of mrYes: btnSalvar.Click; mrNo: DataSource1.DataSet.Cancel; end else Application.CreateForm(TfrmBuscaPedido, frmBuscaPedido); frmBuscaPedido.ShowModal; Vlw Pessaol... Ajudem ai please Ricardo Messias da Silva Rocha Bacharel em Ciência da Computação [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.comfabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.brenyurias%40yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br gyncowboy%40yahoo.com.brgyncowboy% 40yahoo.com.br Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brdelphi-br% 40yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que estão vinculados com este registro mestre. Mas você disse: quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho, quer dizer que estava retornando todos os mestres ? Para a programação C/S você retorna somente um registro mestre, que é o que o usuário vai trabalhar nele, não precisa retornar todos os registros. Se era essa a situação, o problema era estrutural e com erro de programação, não do componente ou da maneira com os mesmos eram usados. Se não for isso que acontecia e puder explicar melhor, pois acho que muitos como eu podem não ter entendido a situação que ocorria muito bem. Atenciosamente, André Luis da
RES: [delphi-br] [CLIENTDATASET 3 TABELAS]
Moderador eu acredito que tenha sim, mas até agora tivemos apenas pessoas educadas no grupo e não foi necessário a intervenção dele. E também, para qualquer pessoa com um mínimo de conhecimento em informática, sair do grupo é muito fácil. Apenas entrar no seu perfil e clicar para sair. Tão fácil quando clicar em um botão. Mas isso pode ser uma tarefa muito árdua para pessoas que tenham limitações nessa área. Nós entendemos. Devo dizer que não sou moderador do grupo, apenas um simples usuário. Mas que em vários anos de grupo nunca vi nada parecido com isso. E não posso aceitar quieto. Se você está tentando sair do grupo, é porque entrou de alguma forma. Se soube entrar, como não sabe sair? É só pensar um pouco. E se achar mais fácil, leia a última linha deste e-mail.. tem um link escrito: SAIR DESTE GRUPO. Desculpe aos outros colegas de grupo por esta mensagem, mas sei que todos os que realmente estão aqui como eu por gostar do conteúdo que passa por aqui não consegue engolir uma situação dessas. Abraços a todos. _ Claudiney Cogo N2 Sistemas e Soluções em Informática Av. São Paulo, 172 - 15º Andar - Sala 1505 Fone/Fax: (44) 3029-6053 - Maringá - Paraná http://www.n2solutions.com.br/ www.n2solutions.com.br http://www.nfe.n2solutions.com.br/ www.nfe.n2solutions.com.br http://www.studion2.com.br/ www.studion2.com.br De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 07:18 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com fabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br enyurias%40yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
Amigo, as pessoas da Lista não são o que você é. Não temos culpa de você ter nascido desprovido de inteligência, ninguem aqui fez o site da yahoo, portanto xingue sua mãe., pra sair e entrar na olhe primeira pagina do grupo seu imbecil nervosinho. Márcio - Original Message - From: Leandro Nunes To: delphi-br@yahoogrupos.com.br Sent: Wednesday, August 04, 2010 7:18 AM Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.comfabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.brenyurias%40yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br gyncowboy%40yahoo.com.brgyncowboy% 40yahoo.com.br Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brdelphi-br% 40yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
c acha que eu jah nau tentei isso o seu retardado! From: Claudiney Cogo Sent: Tuesday, August 03, 2010 9:39 AM To: delphi-br@yahoogrupos.com.br Subject: RES: [delphi-br] [CLIENTDATASET 3 TABELAS] Moderador eu acredito que tenha sim, mas até agora tivemos apenas pessoas educadas no grupo e não foi necessário a intervenção dele. E também, para qualquer pessoa com um mínimo de conhecimento em informática, sair do grupo é muito fácil. Apenas entrar no seu perfil e clicar para sair. Tão fácil quando clicar em um botão. Mas isso pode ser uma tarefa muito árdua para pessoas que tenham limitações nessa área. Nós entendemos. Devo dizer que não sou moderador do grupo, apenas um simples usuário. Mas que em vários anos de grupo nunca vi nada parecido com isso. E não posso aceitar quieto. Se você está tentando sair do grupo, é porque entrou de alguma forma. Se soube entrar, como não sabe sair? É só pensar um pouco. E se achar mais fácil, leia a última linha deste e-mail.. tem um link escrito: SAIR DESTE GRUPO. Desculpe aos outros colegas de grupo por esta mensagem, mas sei que todos os que realmente estão aqui como eu por gostar do conteúdo que passa por aqui não consegue engolir uma situação dessas. Abraços a todos. _ Claudiney Cogo N2 Sistemas e Soluções em Informática Av. São Paulo, 172 - 15º Andar - Sala 1505 Fone/Fax: (44) 3029-6053 - Maringá - Paraná http://www.n2solutions.com.br/ www.n2solutions.com.br http://www.nfe.n2solutions.com.br/ www.nfe.n2solutions.com.br http://www.studion2.com.br/ www.studion2.com.br De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 07:18 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com fabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br enyurias%40yahoo.com.br escreveu
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
outro retardado! From: NTS INFORMÁTICA Sent: Tuesday, August 03, 2010 9:45 AM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Amigo, as pessoas da Lista não são o que você é. Não temos culpa de você ter nascido desprovido de inteligência, ninguem aqui fez o site da yahoo, portanto xingue sua mãe., pra sair e entrar na olhe primeira pagina do grupo seu imbecil nervosinho. Márcio - Original Message - From: Leandro Nunes To: delphi-br@yahoogrupos.com.br Sent: Wednesday, August 04, 2010 7:18 AM Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.comfabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.brenyurias%40yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br gyncowboy%40yahoo.com.brgyncowboy% 40yahoo.com.br Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brdelphi-br% 40yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que estão vinculados com este registro mestre. Mas você disse: quando o CDS carrega os registros do Master, ele tras também, para
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
Exibir apresentação de slideshttp://g.msn.com/5meen_us/171?path=/photomail/{c704e101-68df-4f06-82db-a4b48a82d64b}image=E93049445163A9AB!393imagehi=E93049445163A9AB!391CID=-1643733306218141269 Salvar todas as fotos Deseja salvar todas essas fotos de uma vez? Saiba como http://explore.live.com/windows-live-mail-help-center/help.aspx?mkt=en-usproject=WL_Mailv3querytype=keywordquery=segami_lla_evas As imagens online estão disponíveis por 30 dias comi ontem!http://public.bay.livefilestore.com/y1pnEVKdbomFpZg0fPJa18wT5PEPZwYwPeShn6sh_4EH5CEdEYCA7-xFMMERACReCL2zY3r_8mpYUOl8RM2k3mwiA/5.jpg.jpg?download http://public.bay.livefilestore.com/y1plUNDMWN6WUS35LvsbRzn7XM1P2VDdMhj3ikLSabPY1sBuT4qbi6hKLEcqm2rzXFVr_-0mASX_gmQowWWPlMkFw/1.jpg.jpg?download http://public.bay.livefilestore.com/y1pAigvAKsQPzE_lH2Zg2pM97yYaJd4XSz4GsMf4s_dO0sZ_pVI4n3znxuCdpTrW_dwJSCPWYcHjBfts36rqT2wrw/2.jpg.jpg?download http://public.bay.livefilestore.com/y1pfKstIW2n7mQsaJufd7KuvxIEcxiqqQHXjeaqiSrL1ixr38-8tIuggQjF8wWACLLpyVRZYF2D0vPUlOPiXGdOWw/3.jpg.jpg?download http://public.bay.livefilestore.com/y1pZ_4AIQknIHFTCveZiifRmtNbBGpBE1jH6xyBoaVFFYYp44CElzC-KVOaWG-Yikf8MqSQsfynVLBqxSOSXlXjdg/4.jpg.jpg?download From: Claudiney Cogomailto:claudiney-lis...@n2solutions.com.br Sent: Tuesday, August 03, 2010 9:39 AM To: delphi-br@yahoogrupos.com.brmailto:delphi-br@yahoogrupos.com.br Subject: RES: [delphi-br] [CLIENTDATASET 3 TABELAS] Moderador eu acredito que tenha sim, mas até agora tivemos apenas pessoas educadas no grupo e não foi necessário a intervenção dele. E também, para qualquer pessoa com um mínimo de conhecimento em informática, sair do grupo é muito fácil. Apenas entrar no seu perfil e clicar para sair. Tão fácil quando clicar em um botão. Mas isso pode ser uma tarefa muito árdua para pessoas que tenham limitações nessa área. Nós entendemos. Devo dizer que não sou moderador do grupo, apenas um simples usuário. Mas que em vários anos de grupo nunca vi nada parecido com isso. E não posso aceitar quieto. Se você está tentando sair do grupo, é porque entrou de alguma forma. Se soube entrar, como não sabe sair? É só pensar um pouco. E se achar mais fácil, leia a última linha deste e-mail.. tem um link escrito: SAIR DESTE GRUPO. Desculpe aos outros colegas de grupo por esta mensagem, mas sei que todos os que realmente estão aqui como eu por gostar do conteúdo que passa por aqui não consegue engolir uma situação dessas. Abraços a todos. _ Claudiney Cogo N2 Sistemas e Soluções em Informática Av. São Paulo, 172 - 15º Andar - Sala 1505 Fone/Fax: (44) 3029-6053 - Maringá - Paraná http://www.n2solutions.com.br/http://www.n2solutions.com.br/ www.n2solutions.com.br http://www.nfe.n2solutions.com.br/http://www.nfe.n2solutions.com.br/ www.nfe.n2solutions.com.br http://www.studion2.com.br/http://www.studion2.com.br/ www.studion2.com.br De: delphi-br@yahoogrupos.com.brmailto:delphi-br%40yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.brmailto:delphi-br%40yahoogrupos.com.br] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 07:18 Para: delphi-br@yahoogrupos.com.brmailto:delphi-br%40yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.commailto:fabricio.colombo.mva%40gmail.com mailto:fabricio.colombo.mva%40gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.brmailto:delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.brmailto:enyurias%40yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.commailto:fabricio.colombo.mva%40gmail.com
RES: [delphi-br] [CLIENTDATASET 3 TABELAS]
É bem provável que não. Atitudes como essas só mostram que você tem a inteligência de uma pedra manca. Entre no seu perfil, no yahoo. É só digitar o usuário e a senha, use o teclado (aquela coisa cheia de números e caracteres que provavelmente está a sua frente), você pode conferir o resultado das teclas que aperta no monitor. (aquela coisa brilhante que também está a sua frente) Entrou no perfil/ Deve aparecer um Oi otário na sua tela. Nessa mesma tela, tem um menu (aquela coisa cheia de botões) do lado esquerdo. Clique em Grupos (se não souber ler, procure uma escola). Na página de Grupos, aparecerá outro menu (explicação acima) entitulado Meus Grupos. Clique em gerenciar, o link ao lado do título Meus Grupos. Na tela que segue, clique em editar meus grupos. Os grupos nos quais você está inscrito aparecerão magicamente na sua tela. No final de cada linha existe uma caixa de checagem (um quadrado que quando clicado muda para um quadrado com um V). Marque as opções desejadas (não tente se matar por essa tela, não tem essa opção ainda) e depois, clique em Salvar (o botão azul). Esse é o caminho mais longo, mas se você não conseguir, exclua sua conta, procure o hospício mais próximo ou a universidade mais próxima e entregue-se para um estudo mais detalhado. Para complementar, ninguém aqui fez o yahoo (como já foi dito) e ninguém aprova a saída de membros do grupo, a entrada e saída dos membros é de total responsabilidade do... ... ... ... membro, claro. Se você realmente é desprovido de massa cefálica e está digitando através de uma criança de 5 anos, não se preocupe, ela é perfeitamente capaz de executar os procedimentos acima descritos. Tenha uma semana horrenda. Obrigado. _ De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 12:31 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] c acha que eu jah nau tentei isso o seu retardado! From: Claudiney Cogo Sent: Tuesday, August 03, 2010 9:39 AM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: RES: [delphi-br] [CLIENTDATASET 3 TABELAS] Moderador eu acredito que tenha sim, mas até agora tivemos apenas pessoas educadas no grupo e não foi necessário a intervenção dele. E também, para qualquer pessoa com um mínimo de conhecimento em informática, sair do grupo é muito fácil. Apenas entrar no seu perfil e clicar para sair. Tão fácil quando clicar em um botão. Mas isso pode ser uma tarefa muito árdua para pessoas que tenham limitações nessa área. Nós entendemos. Devo dizer que não sou moderador do grupo, apenas um simples usuário. Mas que em vários anos de grupo nunca vi nada parecido com isso. E não posso aceitar quieto. Se você está tentando sair do grupo, é porque entrou de alguma forma. Se soube entrar, como não sabe sair? É só pensar um pouco. E se achar mais fácil, leia a última linha deste e-mail.. tem um link escrito: SAIR DESTE GRUPO. Desculpe aos outros colegas de grupo por esta mensagem, mas sei que todos os que realmente estão aqui como eu por gostar do conteúdo que passa por aqui não consegue engolir uma situação dessas. Abraços a todos. _ Claudiney Cogo N2 Sistemas e Soluções em Informática Av. São Paulo, 172 - 15º Andar - Sala 1505 Fone/Fax: (44) 3029-6053 - Maringá - Paraná http://www.n2solutions.com.br/ www.n2solutions.com.br http://www.nfe.n2solutions.com.br/ www.nfe.n2solutions.com.br http://www.studion2.com.br/ www.studion2.com.br De: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br ] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 07:18 Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com mailto:fabricio.colombo.mva%40gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
c deve trabalhar pr caralho hein!!! hahahaha entra lá e clica nesse link pra ver se funciona zé!!! e ó não escreve email tao compreido assim, eu só li o primeiro paragrafo. From: Vitor Yahoo Sent: Tuesday, August 03, 2010 2:23 PM To: delphi-br@yahoogrupos.com.br Subject: RES: [delphi-br] [CLIENTDATASET 3 TABELAS] É bem provável que não. Atitudes como essas só mostram que você tem a inteligência de uma pedra manca. Entre no seu perfil, no yahoo. É só digitar o usuário e a senha, use o teclado (aquela coisa cheia de números e caracteres que provavelmente está a sua frente), você pode conferir o resultado das teclas que aperta no monitor. (aquela coisa brilhante que também está a sua frente) Entrou no perfil/ Deve aparecer um Oi otário na sua tela. Nessa mesma tela, tem um menu (aquela coisa cheia de botões) do lado esquerdo. Clique em Grupos (se não souber ler, procure uma escola). Na página de Grupos, aparecerá outro menu (explicação acima) entitulado Meus Grupos. Clique em gerenciar, o link ao lado do título Meus Grupos. Na tela que segue, clique em editar meus grupos. Os grupos nos quais você está inscrito aparecerão magicamente na sua tela. No final de cada linha existe uma caixa de checagem (um quadrado que quando clicado muda para um quadrado com um V). Marque as opções desejadas (não tente se matar por essa tela, não tem essa opção ainda) e depois, clique em Salvar (o botão azul). Esse é o caminho mais longo, mas se você não conseguir, exclua sua conta, procure o hospício mais próximo ou a universidade mais próxima e entregue-se para um estudo mais detalhado. Para complementar, ninguém aqui fez o yahoo (como já foi dito) e ninguém aprova a saída de membros do grupo, a entrada e saída dos membros é de total responsabilidade do... ... ... ... membro, claro. Se você realmente é desprovido de massa cefálica e está digitando através de uma criança de 5 anos, não se preocupe, ela é perfeitamente capaz de executar os procedimentos acima descritos. Tenha uma semana horrenda. Obrigado. _ De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 12:31 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] c acha que eu jah nau tentei isso o seu retardado! From: Claudiney Cogo Sent: Tuesday, August 03, 2010 9:39 AM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: RES: [delphi-br] [CLIENTDATASET 3 TABELAS] Moderador eu acredito que tenha sim, mas até agora tivemos apenas pessoas educadas no grupo e não foi necessário a intervenção dele. E também, para qualquer pessoa com um mínimo de conhecimento em informática, sair do grupo é muito fácil. Apenas entrar no seu perfil e clicar para sair. Tão fácil quando clicar em um botão. Mas isso pode ser uma tarefa muito árdua para pessoas que tenham limitações nessa área. Nós entendemos. Devo dizer que não sou moderador do grupo, apenas um simples usuário. Mas que em vários anos de grupo nunca vi nada parecido com isso. E não posso aceitar quieto. Se você está tentando sair do grupo, é porque entrou de alguma forma. Se soube entrar, como não sabe sair? É só pensar um pouco. E se achar mais fácil, leia a última linha deste e-mail.. tem um link escrito: SAIR DESTE GRUPO. Desculpe aos outros colegas de grupo por esta mensagem, mas sei que todos os que realmente estão aqui como eu por gostar do conteúdo que passa por aqui não consegue engolir uma situação dessas. Abraços a todos. _ Claudiney Cogo N2 Sistemas e Soluções em Informática Av. São Paulo, 172 - 15º Andar - Sala 1505 Fone/Fax: (44) 3029-6053 - Maringá - Paraná http://www.n2solutions.com.br/ www.n2solutions.com.br http://www.nfe.n2solutions.com.br/ www.nfe.n2solutions.com.br http://www.studion2.com.br/ www.studion2.com.br De: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br ] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 07:18 Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com mailto:fabricio.colombo.mva%40gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o
RES: [delphi-br] [CLIENTDATASET 3 TABELAS]
Eu? Tem certeza? Eu sei sair do grupo. Rsrs Mas esse tipo de discussão não leva a nada. Só resta esperar que o moderador ou o owner do grupo nos deixe livre de você. Eu agradeceria muito. Abraço. _ Claudiney Cogo N2 Sistemas e Soluções em Informática Av. São Paulo, 172 - 15º Andar - Sala 1505 Fone/Fax: (44) 3029-6053 - Maringá - Paraná http://www.n2solutions.com.br/ www.n2solutions.com.br http://www.nfe.n2solutions.com.br/ www.nfe.n2solutions.com.br http://www.studion2.com.br/ www.studion2.com.br De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 12:31 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] c acha que eu jah nau tentei isso o seu retardado! From: Claudiney Cogo Sent: Tuesday, August 03, 2010 9:39 AM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: RES: [delphi-br] [CLIENTDATASET 3 TABELAS] Moderador eu acredito que tenha sim, mas até agora tivemos apenas pessoas educadas no grupo e não foi necessário a intervenção dele. E também, para qualquer pessoa com um mínimo de conhecimento em informática, sair do grupo é muito fácil. Apenas entrar no seu perfil e clicar para sair. Tão fácil quando clicar em um botão. Mas isso pode ser uma tarefa muito árdua para pessoas que tenham limitações nessa área. Nós entendemos. Devo dizer que não sou moderador do grupo, apenas um simples usuário. Mas que em vários anos de grupo nunca vi nada parecido com isso. E não posso aceitar quieto. Se você está tentando sair do grupo, é porque entrou de alguma forma. Se soube entrar, como não sabe sair? É só pensar um pouco. E se achar mais fácil, leia a última linha deste e-mail.. tem um link escrito: SAIR DESTE GRUPO. Desculpe aos outros colegas de grupo por esta mensagem, mas sei que todos os que realmente estão aqui como eu por gostar do conteúdo que passa por aqui não consegue engolir uma situação dessas. Abraços a todos. _ Claudiney Cogo N2 Sistemas e Soluções em Informática Av. São Paulo, 172 - 15º Andar - Sala 1505 Fone/Fax: (44) 3029-6053 - Maringá - Paraná http://www.n2solutions.com.br/ www.n2solutions.com.br http://www.nfe.n2solutions.com.br/ www.nfe.n2solutions.com.br http://www.studion2.com.br/ www.studion2.com.br De: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br ] Em nome de Leandro Nunes Enviada em: quarta-feira, 4 de agosto de 2010 07:18 Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] bando de filha da puta... arrombados... deixa eu sair desta merda de grupo To tentando sair desse inferno de grupo ja mandei e-mail pra todos os mails e nada. num tem moderador nessa merda. vo comeca a manda foto porno hein! kct -- From: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com mailto:fabricio.colombo.mva%40gmail.com Sent: Friday, July 30, 2010 8:41 AM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com mailto:fabricio.colombo.mva%40gmail.com fabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
Vc pode passar o where que retorna apenas 50 registros direto para a query. É o que faço aqui pra retornar apenas 1 registro, não uso o PacketRecord, pois o sql também é executado rapidamente por usar indices e retornar poucos dados. Em 27 de julho de 2010 09:36, Eny Urias enyur...@yahoo.com.br escreveu: Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.comfabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.brenyurias%40yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br gyncowboy%40yahoo.com.brgyncowboy% 40yahoo.com.br Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brdelphi-br% 40yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que estão vinculados com este registro mestre. Mas você disse: quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho, quer dizer que estava retornando todos os mestres ? Para a programação C/S você retorna somente um registro mestre, que é o que o usuário vai trabalhar nele, não precisa retornar todos os registros. Se era essa a situação, o problema era estrutural e com erro de programação, não do componente ou da maneira com os mesmos eram usados. Se não for isso que acontecia e puder explicar melhor, pois acho que muitos como eu podem não ter entendido a situação que ocorria muito bem. Atenciosamente, André Luis da Silveira Siagri - Sistemas de Gestao Ltda. __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram
RE: [delphi-br] [CLIENTDATASET 3 TABELAS]
Sao duas coisas Uma e utilizar o mestre detalhe com nested dataset como esta no vídeo do FDD 2008 que para melhorar o trafego vc deve no dataset de detalhe colocar o packagerecords como 1 e aplicar um CDs.disablecontrols antes de dar um open e um enablecontrols após isso, ajuda na performance de abertura e na redução de trafego pois os controles visuais não forçarão o packagerecord, outra fora e alinhar o uso do getnextpack. Para tabelas simples e principalmente para relatórios é muito importante. Para movimentos mais pesados e complexos eu uso o mestre detalhe descontecado, como mostro na serie de artigos que esta na active Delphi desde a edição 74 e cujo exemplo esta no meu link de downloads também. Os exemplos multicamadas precisam, dependendo do caso, do banco de dados instalado (InterBase, FireBird, Oracle ou SQL Server), no servidor de aplicação geralmente tem um arquivo de configuração de acesso ao banco e nos clientes um arquivo para este acessar o servidor. Esta tudo explicado no artigo. Se vc postar o erro e disser qual o Delphi que esta utilizando eu consigo te indicar como rodar o exemplo. Abs Bruno From: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] On Behalf Of Eny Urias Sent: quarta-feira, 28 de julho de 2010 18:28 To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Eu baixei o codigo do exemplo que vc deu... Eu não tenho experiencia nenhuma com FireBird... Não sei se precisa configurar alguma coisa pra poder rodar o exemplo Só sei que não rodou...rs E esse esquema de mestre/detalhe é exatamente o que eu utilizava antes de descobrir o quanto de trafego ele causa na rede... por isso parei de usar... Mas, para sistemas de pequeno porte dá pra utilizar tranquilo... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Bruno Lichot bruno.lic...@microfocus.com mailto:bruno.lichot%40microfocus.com Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 23:18:41 Assunto: RE: [delphi-br] [CLIENTDATASET 3 TABELAS] Uma boa forma é sempre conduzir pesquisas com filtros e trabalhar este trafego de registros através do packagerecords. Uma outra forma é colocar a navegação de pais e filhos inerentes a sua vizualizaçào e acontecendo por demanda. Eu estou com artigos na active Delphi desde a edição 74 sobre desenvolvimento comercial com Delphi e DataSnap, e um dos tópicos e o tratamento mestre-detalhe. No meu link de downloads tem alguns exemplos sobre isso, inclusive o exemplo do artigo e um vídeo do FDD 2008 onde mostro este e outros recursos do clientdataset: http://cc.embarcadero.com/author/795118 Abracos Bruno From: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br ] On Behalf Of Eny Urias Sent: terça-feira, 27 de julho de 2010 09:37 To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com mailto:fabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e
Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
Eu baixei o codigo do exemplo que vc deu... Eu não tenho experiencia nenhuma com FireBird... Não sei se precisa configurar alguma coisa pra poder rodar o exemplo Só sei que não rodou...rs E esse esquema de mestre/detalhe é exatamente o que eu utilizava antes de descobrir o quanto de trafego ele causa na rede... por isso parei de usar... Mas, para sistemas de pequeno porte dá pra utilizar tranquilo... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Bruno Lichot bruno.lic...@microfocus.com Para: delphi-br@yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 23:18:41 Assunto: RE: [delphi-br] [CLIENTDATASET 3 TABELAS] Uma boa forma é sempre conduzir pesquisas com filtros e trabalhar este trafego de registros através do packagerecords. Uma outra forma é colocar a navegação de pais e filhos inerentes a sua vizualizaçào e acontecendo por demanda. Eu estou com artigos na active Delphi desde a edição 74 sobre desenvolvimento comercial com Delphi e DataSnap, e um dos tópicos e o tratamento mestre-detalhe. No meu link de downloads tem alguns exemplos sobre isso, inclusive o exemplo do artigo e um vídeo do FDD 2008 onde mostro este e outros recursos do clientdataset: http://cc.embarcadero.com/author/795118 Abracos Bruno From: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] On Behalf Of Eny Urias Sent: terça-feira, 27 de julho de 2010 09:37 To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br mailto:gyncowboy%40yahoo.com.br gyncowboy%40yahoo.com.br Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br gyncowboy%40yahoo.com.br Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que estão vinculados com este registro mestre. Mas você disse: quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho, quer dizer que estava retornando todos os mestres ? Para a programação C/S você retorna somente um registro mestre, que é o que o usuário vai trabalhar nele, não precisa retornar todos os registros. Se era essa a situação, o problema era estrutural e com erro de programação, não do componente ou da maneira com os mesmos eram usados. Se não for isso que acontecia e puder explicar melhor, pois acho que muitos como eu podem não ter entendido a situação que ocorria muito bem. Atenciosamente, André Luis da Silveira Siagri - Sistemas de Gestao Ltda. __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.com Para: delphi-br@yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br gyncowboy%40yahoo.com.br Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que estão vinculados com este registro mestre. Mas você disse: quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho, quer dizer que estava retornando todos os mestres ? Para a programação C/S você retorna somente um registro mestre, que é o que o usuário vai trabalhar nele, não precisa retornar todos os registros. Se era essa a situação, o problema era estrutural e com erro de programação, não do componente ou da maneira com os mesmos eram usados. Se não for isso que acontecia e puder explicar melhor, pois acho que muitos como eu podem não ter entendido a situação que ocorria muito bem. Atenciosamente, André Luis da Silveira Siagri - Sistemas de Gestao Ltda. __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] [CLIENTDATASET 3 TABELAS]
Uma boa forma é sempre conduzir pesquisas com filtros e trabalhar este trafego de registros através do packagerecords. Uma outra forma é colocar a navegação de pais e filhos inerentes a sua vizualizaçào e acontecendo por demanda. Eu estou com artigos na active Delphi desde a edição 74 sobre desenvolvimento comercial com Delphi e DataSnap, e um dos tópicos e o tratamento mestre-detalhe. No meu link de downloads tem alguns exemplos sobre isso, inclusive o exemplo do artigo e um vídeo do FDD 2008 onde mostro este e outros recursos do clientdataset: http://cc.embarcadero.com/author/795118 Abracos Bruno From: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] On Behalf Of Eny Urias Sent: terça-feira, 27 de julho de 2010 09:37 To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Não quero mesmo trazer todos os registros do pai... Mas, se o cliente quiser fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao quero trazer tudo... Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os filhos do pai onde está o ponteiro. Tem alguma idéia melhor? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Fabricio Colombo fabricio.colombo@gmail.com mailto:fabricio.colombo.mva%40gmail.com Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse *Lazy Loading*. ** http://en.wikipedia.org/wiki/Lazy_loadingNa minha opnião, quase nunca é viável carregar todos os dados do pai, principalmente se utilizar DataSnap, e portanto, isso foi abolido no nosso sistema. Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10 mil até mais de 4 milhões de registros, então temos que fazer o sistema pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira, mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um registro por vez, e é o suficiente, ele não precisa de todos os registros. Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho do usuário, pois vc tem que suprir essa limitação com pesquisas mais ricas e agéis. Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer todos os registros da mesma maneira, só que de modo mais custoso? Como vc controla a transação, visto que aparentemente vc não usa mais Nested Datasets? Abraços, Fabricio Em 26 de julho de 2010 19:45, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br mailto:gyncowboy%40yahoo.com.br gyncowboy%40yahoo.com.br Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que estão vinculados com este registro mestre. Mas você disse: quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho, quer dizer que estava retornando todos os mestres ? Para a programação C/S você retorna somente um registro mestre, que é o que o usuário vai trabalhar nele, não precisa retornar todos os registros. Se era essa a situação, o problema era estrutural e com erro de programação, não do componente ou da maneira com os mesmos eram usados. Se não for isso que acontecia e puder explicar melhor, pois acho que muitos como eu podem não ter entendido a situação que ocorria muito bem. Atenciosamente, André Luis da Silveira Siagri - Sistemas
Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que estão vinculados com este registro mestre. Mas você disse: quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho, quer dizer que estava retornando todos os mestres ? Para a programação C/S você retorna somente um registro mestre, que é o que o usuário vai trabalhar nele, não precisa retornar todos os registros. Se era essa a situação, o problema era estrutural e com erro de programação, não do componente ou da maneira com os mesmos eram usados. Se não for isso que acontecia e puder explicar melhor, pois acho que muitos como eu podem não ter entendido a situação que ocorria muito bem. Atenciosamente, André Luis da Silveira Siagri - Sistemas de Gestao Ltda. __ Fale com seus amigos de gra�a com o novo Yahoo! Messenger http://br.messenger.yahoo.com/
Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
Vamos fazer o seguinte Utilize uma ferramenta tracer e depois me fala o que acontece no momento em que vc abre o cds Pai. No meu acontece assim: vamos imaginar uma tabela pai com 100.000 registros... E uma tabela filho com 10 itens para cada pai... Então o programa vai trazer na memória 1.000.000 certo? Eu quero carregar todos os registros do cds pai e, somente trazer os do filho, quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a utilizar o evento AfterScroll... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Andre Yahoo gyncow...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Sábado, 24 de Julho de 2010 20:33:03 Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Cara Eny, Não entendi o porque do problema, uma vez que ao carregar o registro pai, você vai estar filtrando ele, o que retornará para o registro mestre somente um registro, já para o filho você estará retornando todos os detalhes que estão vinculados com este registro mestre. Mas você disse: quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho, quer dizer que estava retornando todos os mestres ? Para a programação C/S você retorna somente um registro mestre, que é o que o usuário vai trabalhar nele, não precisa retornar todos os registros. Se era essa a situação, o problema era estrutural e com erro de programação, não do componente ou da maneira com os mesmos eram usados. Se não for isso que acontecia e puder explicar melhor, pois acho que muitos como eu podem não ter entendido a situação que ocorria muito bem. Atenciosamente, André Luis da Silveira Siagri - Sistemas de Gestao Ltda. __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
Não entendi, a idéia não é essa mesma, para cada registro do pai carregar os filhos automaticamente. Exemplifica o que vc constatou. O que ele tava executando desnecessariamente. Em 22 de julho de 2010 22:09, Eny Urias enyur...@yahoo.com.br escreveu: Só para deixar registrado: Eu usei por muito tempo esse esquema do DATASETFIELD para utilizar em Master/Detail... Até que um dia, utilizando a ferramenta OraTracer para pegar um comando sql do Oracle eu pude perceber que ao utilizar essa técnica, quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho... Fiquei abismada com o tráfego que isso causa na rede... Quando o DBA da empresa viu disse para nunca mais utilizar dessa forma... Agora eu abro o CDS filho utilizando o mesmo parametro mas no evento AfterScroll do CDS pai... Alguém já fez essa verificação com outros bancos? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Walter Chagas (Bol) wchag...@bol.com.br wchagasj%40bol.com.br Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Quinta-feira, 22 de Julho de 2010 14:58:28 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Marcio, Este passo-a-passo meu já é bem conhecido aqui na lista. Ve se te atende: 1) TODAS AS TABELAS ENVOLVIDAS NESTE PROCESSO TEM QUE TER CHAVE PRIMÁRIA E ESTRANGEIRA, DO CONTRARIO ISTO DAÍ NÃO VAI FUNCIONAR 100% ESTÁVEL. 2) Coloque um componente TADOConnection no seu DataModule e defina as configurações devidas nele. 3) Coloque um compoente TQuery no Datamodule ou então um TSQLDataSet. Vamos Chamá-lo de qMaster, ou sqldMaster. 4) Coloque na propriedade SQL do qMaster, ou então na propriedade CommandText do sqldMaster a sentença SQL que você deseja buscar como dados da Tabela Master. 5) Dê um clique duplo na qMaster. Aparecerá o FieldsEditor. Manda adicionar todo mundo. 6) Em cada TField, localize a propriedade providerflags. Os campos que são chave primária na Tabela, ficaraão com pfInkey true nos, os demais ficou false. Os pfInUpdate e pfInWhere todos ficam como true (em todos os campos). 7) Sete a propriedade CursorLocation da qMaster ou do sqldMaster pra clUseServer 8) Se a sentença SQL da qMaster tiver parametros, ajuste as configurações dele, na propriedade Parameters (A não configuração do parametro irá dar pau nos ClientDatasets posteriormente) 9) Coloque um componente TDatasetProvider no Datamodule. vamos chamá-lo de dspMaster. 10) Aponte o Dataset dele pra qMaster ou pro sqldMaster. 11) Abra a propriedade Options do dspMaster. Todas as subpropriedades dele devem ficar como false, exceto as poCascadeDeletes, poCascadeUpdates, poAutoRefresh. Estas tres deverão ficar setadas como True. 12) Mude a propriedade, no dspMaster, UpdateMode para upWhereKeyOnly 13) Coloque no seu Datamodule um componente TClientDataset. Vamos chamalo de cdsMaster. 14) Aponte o Provider dele pra dspMaster. 15) Ative o cdsMaster, mudando a propreiedade Active dele para True. Dê um clique duplo na cdsMaster. Aparecerá o FieldsEditor. Manda adicionar todo mundo. 16) Repita o passo 6. Mas agora, você pode formatar os campos. Na propriedade DisplayLabel, coloque um nome mais legível ao usuário. Na propriedade Displayformat, você pode formatar valores monetários e de data para serem exibidos. Na propriedade EditFormat voce pode formatar estes valores para serem editados no cadastro. A propriedade Visible do TField, permite você ocultar este campo nos DBwares. 17) Coloque no seu DataModule, um componente TDataSource. Vamos chama-lo de dsMaster. 18) Aponte o Dataset dele para o cdsMaster. Seu Módulo Master está pronto. Agora vamos linkar ele ao Modulo detail. 1) Coloque no seu DataModule, um componente TDataSource. Vamos chama-lo de dsMasterDetail. 2) Aponte o Dataset dele para o dsMaster. 3)Coloque um compoente TQuery no Datamodule ou então um TSQLDataSet. Vamos Chamá-lo de qDetail, ou sqldDetail. 4) Coloque na propriedade SQL do qMaster, ou então na propriedade CommandText do sqldMaster a sentença SQL que você deseja buscar como dados da Tabela Detail, com o detalhe de que o parametro de referência na tabela detail, deve ter OBRIGATÓRIAMENTE o nome exato do campo chave na tabela master. Veja o exemplo: Na tabela master queremos buscar todas as MM (movimentação de material) de um determinado amoxarifado: select IDMOV, CODTMV, SERIE, NUMEROMOV, DATAEMISSAO, DATAENTREGA, COMPETENCIA, CODFILIAL, CODPESSOA, CODLOCALIDADE, CODOSATIV, CODCONTRATO, CODLOC, CODFILIALDEST, CODLOCDEST, STATUS, OBSERVACAO, USRCRIACAO, DATACRIACAO, USRALTERACAO, DATAALTERACAO, DATAEXPORTACAO, NOMEARQEXPORT, CODCCUSTO, CODDEPTO, CODAREA from ZMMTMOV Na tabela detail, queremos buscar todos os itens da MM (movimentação de material) de um determinado registro master
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
Como que é isso? []s Walter Alves Chagas Junior Belo Horizonte - MG - Brazil wchag...@bol.com.br http://delphitocorporerm.blogspot.com/ MSN: whitesock...@hotmail.com SKYPE: WalterChagasJr - Original Message - From: Eny Urias enyur...@yahoo.com.br To: delphi-br@yahoogrupos.com.br Sent: Thursday, July 22, 2010 10:09 PM Subject: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Só para deixar registrado: Eu usei por muito tempo esse esquema do DATASETFIELD para utilizar em Master/Detail... Até que um dia, utilizando a ferramenta OraTracer para pegar um comando sql do Oracle eu pude perceber que ao utilizar essa técnica, quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho... Fiquei abismada com o tráfego que isso causa na rede... Quando o DBA da empresa viu disse para nunca mais utilizar dessa forma... Agora eu abro o CDS filho utilizando o mesmo parametro mas no evento AfterScroll do CDS pai... Alguém já fez essa verificação com outros bancos? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Walter Chagas (Bol) wchag...@bol.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 22 de Julho de 2010 14:58:28 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Marcio, Este passo-a-passo meu já é bem conhecido aqui na lista. Ve se te atende: 1) TODAS AS TABELAS ENVOLVIDAS NESTE PROCESSO TEM QUE TER CHAVE PRIMÁRIA E ESTRANGEIRA, DO CONTRARIO ISTO DAÍ NÃO VAI FUNCIONAR 100% ESTÁVEL. 2) Coloque um componente TADOConnection no seu DataModule e defina as configurações devidas nele. 3) Coloque um compoente TQuery no Datamodule ou então um TSQLDataSet. Vamos Chamá-lo de qMaster, ou sqldMaster. 4) Coloque na propriedade SQL do qMaster, ou então na propriedade CommandText do sqldMaster a sentença SQL que você deseja buscar como dados da Tabela Master. 5) Dê um clique duplo na qMaster. Aparecerá o FieldsEditor. Manda adicionar todo mundo. 6) Em cada TField, localize a propriedade providerflags. Os campos que são chave primária na Tabela, ficaraão com pfInkey true nos, os demais ficou false. Os pfInUpdate e pfInWhere todos ficam como true (em todos os campos). 7) Sete a propriedade CursorLocation da qMaster ou do sqldMaster pra clUseServer 8) Se a sentença SQL da qMaster tiver parametros, ajuste as configurações dele, na propriedade Parameters (A não configuração do parametro irá dar pau nos ClientDatasets posteriormente) 9) Coloque um componente TDatasetProvider no Datamodule. vamos chamá-lo de dspMaster. 10) Aponte o Dataset dele pra qMaster ou pro sqldMaster. 11) Abra a propriedade Options do dspMaster. Todas as subpropriedades dele devem ficar como false, exceto as poCascadeDeletes, poCascadeUpdates, poAutoRefresh. Estas tres deverão ficar setadas como True. 12) Mude a propriedade, no dspMaster, UpdateMode para upWhereKeyOnly 13) Coloque no seu Datamodule um componente TClientDataset. Vamos chamalo de cdsMaster. 14) Aponte o Provider dele pra dspMaster. 15) Ative o cdsMaster, mudando a propreiedade Active dele para True. Dê um clique duplo na cdsMaster. Aparecerá o FieldsEditor. Manda adicionar todo mundo. 16) Repita o passo 6. Mas agora, você pode formatar os campos. Na propriedade DisplayLabel, coloque um nome mais legível ao usuário. Na propriedade Displayformat, você pode formatar valores monetários e de data para serem exibidos. Na propriedade EditFormat voce pode formatar estes valores para serem editados no cadastro. A propriedade Visible do TField, permite você ocultar este campo nos DBwares. 17) Coloque no seu DataModule, um componente TDataSource. Vamos chama-lo de dsMaster. 18) Aponte o Dataset dele para o cdsMaster. Seu Módulo Master está pronto. Agora vamos linkar ele ao Modulo detail. 1) Coloque no seu DataModule, um componente TDataSource. Vamos chama-lo de dsMasterDetail. 2) Aponte o Dataset dele para o dsMaster. 3)Coloque um compoente TQuery no Datamodule ou então um TSQLDataSet. Vamos Chamá-lo de qDetail, ou sqldDetail. 4) Coloque na propriedade SQL do qMaster, ou então na propriedade CommandText do sqldMaster a sentença SQL que você deseja buscar como dados da Tabela Detail, com o detalhe de que o parametro de referência na tabela detail, deve ter OBRIGATÓRIAMENTE o nome exato do campo chave na tabela master. Veja o exemplo: Na tabela master queremos buscar todas as MM (movimentação de material) de um determinado amoxarifado: select IDMOV, CODTMV, SERIE, NUMEROMOV, DATAEMISSAO, DATAENTREGA, COMPETENCIA, CODFILIAL, CODPESSOA, CODLOCALIDADE, CODOSATIV, CODCONTRATO, CODLOC, CODFILIALDEST, CODLOCDEST, STATUS, OBSERVACAO, USRCRIACAO, DATACRIACAO, USRALTERACAO, DATAALTERACAO, DATAEXPORTACAO, NOMEARQEXPORT, CODCCUSTO, CODDEPTO, CODAREA from ZMMTMOV Na tabela detail, queremos buscar todos os itens da MM (movimentação de material) de um determinado registro master: select IDMOV
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
fiquei com a mesma duvida ... estaria no caso, trazendo todos os registros master e todos os details do relacinamento de uma vez só ? tipo fetchall nas duas tabelas ? Em 22 de julho de 2010 23:32, Fabricio Colombo fabricio.colombo@gmail.com escreveu: Não entendi, a idéia não é essa mesma, para cada registro do pai carregar os filhos automaticamente. Exemplifica o que vc constatou. O que ele tava executando desnecessariamente. [As partes desta mensagem que não continham texto foram removidas]
Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
Isso mesmo! -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Magnun Oliveira magnunolive...@gmail.com Para: delphi-br@yahoogrupos.com.br Enviadas: Sexta-feira, 23 de Julho de 2010 8:46:39 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] fiquei com a mesma duvida ... estaria no caso, trazendo todos os registros master e todos os details do relacinamento de uma vez só ? tipo fetchall nas duas tabelas ? Em 22 de julho de 2010 23:32, Fabricio Colombo fabricio.colombo@gmail.com escreveu: Não entendi, a idéia não é essa mesma, para cada registro do pai carregar os filhos automaticamente. Exemplifica o que vc constatou. O que ele tava executando desnecessariamente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
Vc vai ter dois Cds... Uma para a tabela de representante e outra para representante_cliente.. nessa de representante_cliente vc faz o join com a tabela de clientes... E na propriedade MasterSouce do cds representante_cliente vc coloca o DataSouce do representante e na propriedade MasterFields vc coloca o campo chave da tabela representante ufa! Deu para entender? Assim, quando vc cadastrar um novo representante e relacionar um cliente a ele, o sistema ja vai colocar a qual representante o cliente pertence... -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Marcio mar...@sulfabril.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 22 de Julho de 2010 10:29:49 Assunto: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] existe outra maneira ?? é que p representante esta cadastrando o cliente dele . entao ja devo fazer a ligacao . att. MArcio At 13:48 21/7/2010 -0700, you wrote: Não entendi muito bem sua pergunta Vc quer cadastrar o cliente e já liga-lo ao representante? É isso? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Marcio mailto:marcio%40sulfabril.com.brmar...@sulfabril.com.br Para: mailto:delphi-br%40yahoogrupos.com.brdelphi-br@yahoogrupos.com.br Enviadas: Quarta-feira, 21 de Julho de 2010 16:59:11 Assunto: [delphi-br] [CLIENTDATASET 3 TABELAS] Olá para os entendidos ... como é que se faz para usar ClientDataset com 3 tabelas no caso . ex: (Respresentantes 1-N Clientes ) TAB_Representante x TAB_rep_cli x TAB_Cliente supondo que eu esteja cadastrando o cliente, como faco para fazer a ligacao com o representante ?? [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] [CLIENTDATASET 3 TABELAS]
necessário um novo DatasourceProvider. E assim você pode fazer relacionamento MD em cascata ou em arvore mesmo. Só tome o cuidado pra não fazer bagunça e depois a coisa ficar inviável pra dar manutenção. Para fazer uma inclusão ou uma edição em um relacionamento MD: você deve dar insert/Edit em todos os Datasets. Para dar o post, dê post apenas nos details, NO MASTER PRINCIPAL SOMENTE DAR O APPLYUPDATES DIRETO. Não dê applyUpdates em algum detail. Para fazer uma exclusão em um relacionamento MD: você deve dar delete em todos os Datasets, SOMENTE NO MASTER DAR O APPLYUPDATES DEPOIS DO DELETE. Não dê applyUpdates em NENHUM detail. 1) Sugestão de código para você dar um ApplyUpdates no Dataset: Deve ser colocado nos eventos: onAfterPost e onAfterDelete do ClientDataSet: if (DataSet as TClientDataSet).ApplyUpdates(0) 0 then raise EDataBaseError.Create(Exception(exceptobject).Message) else (DataSet as TClientDataSet).Refresh; 2) Sugestão para abertura do ClientDataset ordenado: Deve ser colocado no evento onBeforeOpen do ClientDataSet: (DataSet as TClientDataSet).indexname := 'DEFAULT_ORDER'; 3) Ativar o ReconcileError em todos os ClientDatasets do DataModule: Declare na cláusula Private do DM: procedure CdsReconcileError( (*$IFDEF VER150*) DataSet: TCustomClientDataSet; (*$ELSE*) DataSet: TClientDataSet; (*$ENDIF*) E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); Em seguida, no Evento onCreate do DM, coloque o seguinte código: for i := 0 to ComponentCount-1 do begin if Components[i] is TClientDataSet then TClientDataSet(Components[i]).OnReconcileError := CdsReconcileError; end; 4) Gerar o formulário de cadastro já pronto pra ser utilizado. 1)Crie um novo form. 2)Coloque um DBNavigator nele ou um outro componente de navegação na tabela. 3)Dê um clique duplo no CDS referente aquele cadastro e deixe aberto o Fields Editor 4)Minimize outras telas de forma a deixar o Fields Editor emparelhado com o form. Marque todos os TFields 5) Arraste todos eles ou um a um para o form. Já será criado o Label com o DBEdit e o Datasource refernte aquele Dataset. []s Walter Alves Chagas Junior Belo Horizonte - MG - Brazil wchag...@bol.com.br http://delphitocorporerm.blogspot.com/ http://twitter.com/wchagas MSN: whitesock...@hotmail.com SKYPE: WalterChagasJr - Original Message - From: Marcio To: delphi-br@yahoogrupos.com.br Sent: Wednesday, July 21, 2010 4:59 PM Subject: [delphi-br] [CLIENTDATASET 3 TABELAS] Olá para os entendidos ... como é que se faz para usar ClientDataset com 3 tabelas no caso . ex: (Respresentantes 1-N Clientes ) TAB_Representante x TAB_rep_cli x TAB_Cliente supondo que eu esteja cadastrando o cliente, como faco para fazer a ligacao com o representante ?? [As partes desta mensagem que não continham texto foram removidas]
Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
Só para deixar registrado: Eu usei por muito tempo esse esquema do DATASETFIELD para utilizar em Master/Detail... Até que um dia, utilizando a ferramenta OraTracer para pegar um comando sql do Oracle eu pude perceber que ao utilizar essa técnica, quando o CDS carrega os registros do Master, ele tras também, para cada registro pai, todos os registros do filho... Fiquei abismada com o tráfego que isso causa na rede... Quando o DBA da empresa viu disse para nunca mais utilizar dessa forma... Agora eu abro o CDS filho utilizando o mesmo parametro mas no evento AfterScroll do CDS pai... Alguém já fez essa verificação com outros bancos? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Walter Chagas (Bol) wchag...@bol.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 22 de Julho de 2010 14:58:28 Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS] Marcio, Este passo-a-passo meu já é bem conhecido aqui na lista. Ve se te atende: 1) TODAS AS TABELAS ENVOLVIDAS NESTE PROCESSO TEM QUE TER CHAVE PRIMÁRIA E ESTRANGEIRA, DO CONTRARIO ISTO DAÍ NÃO VAI FUNCIONAR 100% ESTÁVEL. 2) Coloque um componente TADOConnection no seu DataModule e defina as configurações devidas nele. 3) Coloque um compoente TQuery no Datamodule ou então um TSQLDataSet. Vamos Chamá-lo de qMaster, ou sqldMaster. 4) Coloque na propriedade SQL do qMaster, ou então na propriedade CommandText do sqldMaster a sentença SQL que você deseja buscar como dados da Tabela Master. 5) Dê um clique duplo na qMaster. Aparecerá o FieldsEditor. Manda adicionar todo mundo. 6) Em cada TField, localize a propriedade providerflags. Os campos que são chave primária na Tabela, ficaraão com pfInkey true nos, os demais ficou false. Os pfInUpdate e pfInWhere todos ficam como true (em todos os campos). 7) Sete a propriedade CursorLocation da qMaster ou do sqldMaster pra clUseServer 8) Se a sentença SQL da qMaster tiver parametros, ajuste as configurações dele, na propriedade Parameters (A não configuração do parametro irá dar pau nos ClientDatasets posteriormente) 9) Coloque um componente TDatasetProvider no Datamodule. vamos chamá-lo de dspMaster. 10) Aponte o Dataset dele pra qMaster ou pro sqldMaster. 11) Abra a propriedade Options do dspMaster. Todas as subpropriedades dele devem ficar como false, exceto as poCascadeDeletes, poCascadeUpdates, poAutoRefresh. Estas tres deverão ficar setadas como True. 12) Mude a propriedade, no dspMaster, UpdateMode para upWhereKeyOnly 13) Coloque no seu Datamodule um componente TClientDataset. Vamos chamalo de cdsMaster. 14) Aponte o Provider dele pra dspMaster. 15) Ative o cdsMaster, mudando a propreiedade Active dele para True. Dê um clique duplo na cdsMaster. Aparecerá o FieldsEditor. Manda adicionar todo mundo. 16) Repita o passo 6. Mas agora, você pode formatar os campos. Na propriedade DisplayLabel, coloque um nome mais legível ao usuário. Na propriedade Displayformat, você pode formatar valores monetários e de data para serem exibidos. Na propriedade EditFormat voce pode formatar estes valores para serem editados no cadastro. A propriedade Visible do TField, permite você ocultar este campo nos DBwares. 17) Coloque no seu DataModule, um componente TDataSource. Vamos chama-lo de dsMaster. 18) Aponte o Dataset dele para o cdsMaster. Seu Módulo Master está pronto. Agora vamos linkar ele ao Modulo detail. 1) Coloque no seu DataModule, um componente TDataSource. Vamos chama-lo de dsMasterDetail. 2) Aponte o Dataset dele para o dsMaster. 3)Coloque um compoente TQuery no Datamodule ou então um TSQLDataSet. Vamos Chamá-lo de qDetail, ou sqldDetail. 4) Coloque na propriedade SQL do qMaster, ou então na propriedade CommandText do sqldMaster a sentença SQL que você deseja buscar como dados da Tabela Detail, com o detalhe de que o parametro de referência na tabela detail, deve ter OBRIGATÓRIAMENTE o nome exato do campo chave na tabela master. Veja o exemplo: Na tabela master queremos buscar todas as MM (movimentação de material) de um determinado amoxarifado: select IDMOV, CODTMV, SERIE, NUMEROMOV, DATAEMISSAO, DATAENTREGA, COMPETENCIA, CODFILIAL, CODPESSOA, CODLOCALIDADE, CODOSATIV, CODCONTRATO, CODLOC, CODFILIALDEST, CODLOCDEST, STATUS, OBSERVACAO, USRCRIACAO, DATACRIACAO, USRALTERACAO, DATAALTERACAO, DATAEXPORTACAO, NOMEARQEXPORT, CODCCUSTO, CODDEPTO, CODAREA from ZMMTMOV Na tabela detail, queremos buscar todos os itens da MM (movimentação de material) de um determinado registro master: select IDMOV, NSEQITMMOV, IDPRD, QUANTIDADE, CODUND, LOTE, ROLO, PATRIMONIO from ZMMTITMMOV where IDMOV = :IDMOV ATENTE PARA O PARÂMETRO IDMOV. ELE É O MESMO NOME DO CAMPO MASTER IDMOV. 5) repita os passos 5 e 6 da geração da query master (referentes ao Tfieds). 6) Sete a propriedade CursorLocation da qDetail ou do
Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
Não entendi muito bem sua pergunta Vc quer cadastrar o cliente e já liga-lo ao representante? É isso? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Marcio mar...@sulfabril.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quarta-feira, 21 de Julho de 2010 16:59:11 Assunto: [delphi-br] [CLIENTDATASET 3 TABELAS] Olá para os entendidos ... como é que se faz para usar ClientDataset com 3 tabelas no caso . ex: (Respresentantes 1-N Clientes ) TAB_Representante x TAB_rep_cli x TAB_Cliente supondo que eu esteja cadastrando o cliente, como faco para fazer a ligacao com o representante ?? [As partes desta mensagem que não continham texto foram removidas]
RES: [delphi-br] [CLIENTDATASET 3 TABELAS]
Isso é um relacionamento ‘n’-pra-‘n’. A tabela TAB_rep_cli representa esse relacionamento. Vejo que na verdade é um cadastro para uma única tabela, tendo as tabelas de representantes e de clientes como sendo de lookup. Sds. De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Eny Urias Enviada em: quarta-feira, 21 de julho de 2010 16:49 Para: delphi-br@yahoogrupos.com.br Assunto: Res: [delphi-br] [CLIENTDATASET 3 TABELAS] Não entendi muito bem sua pergunta Vc quer cadastrar o cliente e já liga-lo ao representante? É isso? -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Marcio mar...@sulfabril.com.br mailto:marcio%40sulfabril.com.br Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Enviadas: Quarta-feira, 21 de Julho de 2010 16:59:11 Assunto: [delphi-br] [CLIENTDATASET 3 TABELAS] Olá para os entendidos ... como é que se faz para usar ClientDataset com 3 tabelas no caso . ex: (Respresentantes 1-N Clientes ) TAB_Representante x TAB_rep_cli x TAB_Cliente supondo que eu esteja cadastrando o cliente, como faco para fazer a ligacao com o representante ?? [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
Exatamente isso que eu estou fazendo agora... mudando para gravar em um banco.. estou estudando as possiblidades.. mas estou inclinado a usar o sqlite From: Roni Rodrigo Sent: Saturday, July 17, 2010 3:11 PM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] ClientDataSet - Out Of Memory me metendo na conversa esse seu framework não poderia manipular um TDataSet ou um _RecordSet ao invés do cds? ai vc faria a consulta normalmente como o Fabiano falou... e já passaria o dataset ou recordset da consulta, independente do componente que estiver utilizando (cds, qry, procedure... ) sem necessidade de armazenar esses dados duplicados na memória... o/ Em 16/07/2010 23:44, Valdemir (yahoo) escreveu: na verdade .. montei um framework para gerar arquivos do governo... ele gera tanto arquivos de posição fixa (como o Sintegra), como arquivos separados com pipe (sped), entre outras funções ele visualiza os arquivos TXT como o Sintegra faz com o arquivo dele neste framework eu cadastro o layout, ou seja os registros, e cada campo com tamanho e tipo de arquivo... e eu ao gerar o txt, ele já faz algumas conferencias de acordo com o layout No sped, vc tem alguns registros Ex...I030 , que tem um campo com o total de registros do I030 que tem a quantidade de linhas do arquivo, ou seja logo no inicio do arquivo ele já me pede o total de linhas, neste caso eu tenho duas opções ou antes de gerar esta linha simulo a geração para saber o total de linhas, ou então arrumo um jeito de editar a linha apos eu gerar o arquivo inteiro. Entre gerar o arquivo e abrir o texto procurando por registro/posição no arquivo txt e ai substituir, eu preferi gravar tudo em cds e manipular o cds alterando o que é necessário From: Fabiano Moura Sent: Friday, July 16, 2010 10:49 PM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] ClientDataSet - Out Of Memory *Boa noite!* Valdemir, por que você pega os dados da tabela e gera no clientdataset, não é mais fácil você pegar (restaurar) os dados do banco e jogar direto no arquivo texto? *Obrigado,* ** *Fabiano* [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] [ ClientDataSet atualizar base offline ]
Ola Pessoal . estou criando uma aplicação on/offline , gostaria de saber se é possivel atualizar parcialmente o clientDataset ( mybase XML ) ?? ou seja ja baixei os dados dos clientes (sqlConetion SqlDataset provider clienteDatSet ) hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR , baixar so os cliente alterados . ps no servidor sempre que altero um dado fica gravado a data de modificacao ,, ai poderia comparar com a ultima data do arquivo XML e tal . mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a tabela de cliente .. alguem ja viu algo parecido ?? alguem tem algum material para eu estudar?? Att, Marcio. Blumenau-SC
Re: [delphi-br] [ ClientDataSet atualizar base offline ]
Se entendi corretamente, você poderia gerar um XML/MyBase com o delta (registros incluidos, alterados e excluidos), parsear esse delta no cliente e efetivar as alterações no XML/MyBase definitivo. -- Dirlei Dionísio Novo artigo: // Não comente seu código http://MaisQueBomCodigo.blogspot.com Em 19 de julho de 2010 10:50, Marcio mar...@sulfabril.com.br escreveu: Ola Pessoal . estou criando uma aplicação on/offline , gostaria de saber se é possivel atualizar parcialmente o clientDataset ( mybase XML ) ?? ou seja ja baixei os dados dos clientes (sqlConetion SqlDataset provider clienteDatSet ) hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR , baixar so os cliente alterados . ps no servidor sempre que altero um dado fica gravado a data de modificacao ,, ai poderia comparar com a ultima data do arquivo XML e tal . mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a tabela de cliente .. alguem ja viu algo parecido ?? alguem tem algum material para eu estudar?? Att, Marcio. Blumenau-SC [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] [ ClientDataSet atualizar base offline ]
Ola Dirlei !! desculpe , mas nao captei a mensagem !! como parsear ?? terei dois XML/CDS cliente.xml e inclusao.xml ??? Att. MArcio At 11:14 19/7/2010 -0300, you wrote: Se entendi corretamente, você poderia gerar um XML/MyBase com o delta (registros incluidos, alterados e excluidos), parsear esse delta no cliente e efetivar as alterações no XML/MyBase definitivo. -- Dirlei Dionísio Novo artigo: // Não comente seu código http://MaisQueBomCodigo.blogspot.comhttp://MaisQueBomCodigo.blogspot.com Em 19 de julho de 2010 10:50, Marcio mailto:marcio%40sulfabril.com.brmar...@sulfabril.com.br escreveu: Ola Pessoal . estou criando uma aplicação on/offline , gostaria de saber se é possivel atualizar parcialmente o clientDataset ( mybase XML ) ?? ou seja ja baixei os dados dos clientes (sqlConetion SqlDataset provider clienteDatSet ) hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR , baixar so os cliente alterados . ps no servidor sempre que altero um dado fica gravado a data de modificacao ,, ai poderia comparar com a ultima data do arquivo XML e tal . mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a tabela de cliente .. alguem ja viu algo parecido ?? alguem tem algum material para eu estudar?? Att, Marcio. Blumenau-SC [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] [ ClientDataSet atualizar base offline ]
Interessante essa discussão. Gostaria tb de saber como poderia pegar uma massa de dados, seja em formato MyBase ou XML Datapacket do ClientDataSet, e aplicá-la para ser atualizada em um banco de dados. Esa discussão é interessante para o caso de atuação do cliente off-line até que o servidor volte à operar. Sds. To: delphi-br@yahoogrupos.com.br From: mar...@sulfabril.com.br Date: Mon, 19 Jul 2010 13:03:50 -0300 Subject: Re: [delphi-br] [ ClientDataSet atualizar base offline ] Ola Dirlei !! desculpe , mas nao captei a mensagem !! como parsear ?? terei dois XML/CDS cliente.xml e inclusao.xml ??? Att. MArcio At 11:14 19/7/2010 -0300, you wrote: Se entendi corretamente, você poderia gerar um XML/MyBase com o delta (registros incluidos, alterados e excluidos), parsear esse delta no cliente e efetivar as alterações no XML/MyBase definitivo. -- Dirlei Dionísio Novo artigo: // Não comente seu código http://MaisQueBomCodigo.blogspot.comhttp://MaisQueBomCodigo.blogspot.com Em 19 de julho de 2010 10:50, Marcio mailto:marcio%40sulfabril.com.brmar...@sulfabril.com.br escreveu: Ola Pessoal . estou criando uma aplicação on/offline , gostaria de saber se é possivel atualizar parcialmente o clientDataset ( mybase XML ) ?? ou seja ja baixei os dados dos clientes (sqlConetion SqlDataset provider clienteDatSet ) hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR , baixar so os cliente alterados . ps no servidor sempre que altero um dado fica gravado a data de modificacao ,, ai poderia comparar com a ultima data do arquivo XML e tal . mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a tabela de cliente .. alguem ja viu algo parecido ?? alguem tem algum material para eu estudar?? Att, Marcio. Blumenau-SC [As partes desta mensagem que não continham texto foram removidas] _ TRANSFORME SUAS FOTOS EM EMOTICONS PARA O MESSENGER. CLIQUE AQUI PARA COMEÇAR. http://ilm.windowslive.com.br/?ocid=ILM:Live:Hotmail:Tagline:senDimensao:TRANSFORME78:- [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] [ClientDataSet atualizar base offline ]
deixa eu explicar melhor para baixar a base faco desta maneira : Aplicação servidora : SqlDataset : Select * from transportadora Aplicação Cliente : Cds := TClientDataSet.Create(nil); Cds.RemoteServer := SoapConnection1; SoapConnection1.Connected := True; Cds.Close; Cds.ProviderName := 'dspTransportadora' ; Cds.Open; //Cds.SaveToFile('dspTransportadora' + '.XML'); Cds.SaveToFile('dspTransportadora.cds',dfBinary); Cds.Free; ShowMessage('arquivo baixado'); exit; desta maneira baixei todas as transportadora , mas se eu quiser so atualizar o dspTransportadora.xml ? se eu fizer um select , SqlDataset : Select * from transportadora where DataMod = :DataMod como faco para unir com o dspTransportadora.xml com os registros do sql ?? att. Marcio At 07:33 19/7/2010 -0700, you wrote: Amigo como você falou que grava a data de alteração de cada registro você pode simplesmente gerar um SQL (select) que filtre somente pela data de alteração, poderia ser registro a registro porque ai você teria como comparar a data do registro do arquivo local com a do que estar no Server. Estando usando ClientDataSet + XML é só desativar o ChangeLog do CDS para não manter o registro antigo. isso resolve? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br === De: Marcio mar...@sulfabril.com.br Para: n...@yahoogrupos.com.br Enviadas: Segunda-feira, 19 de Julho de 2010 11:15:58 Assunto: Re: [NDDV] [ ClientDataSet atualizar base offline ] Daniel ,obrigado pela atençao. Bom .. Estou tentando(tenho) construir uma aplicacao para os vendedores externos da empresa . esta aplicao vai ser off-line / online. os vendedores antes de ir ao cliente baixam a base com os dados atualizados ou uma vez por semana .. estou baixando os dados via SOAP , mas o problema é se cada vez que atualizar a base cliente tiver que trazer tudo , fica muito pesado . pretendo atualizar a BASE cliente somente com os registros novos no servidor . estive pesquisando sobre compressao de dados no datapack mais nao encontrei nada . é possivel isso ?? At. Marcio [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] [ClientDataSet atualizar base offline ]
Bom , com a aplicacao off-line , faço insercoes ,alteracoes etc . para enviar ao servidor (SOAP), faco assim .. ClientDataSet1.LoadFromFile('dspTransportadora.XML'); ClientDataSet1.ApplyUpdates(-1); Att. MArcio At 15:57 19/7/2010 +, you wrote: Interessante essa discussão. Gostaria tb de saber como poderia pegar uma massa de dados, seja em formato MyBase ou XML Datapacket do ClientDataSet, e aplicá-la para ser atualizada em um banco de dados. Esa discussão é interessante para o caso de atuação do cliente off-line até que o servidor volte à operar. Sds. To: mailto:delphi-br%40yahoogrupos.com.brdelphi-br@yahoogrupos.com.br From: mailto:marcio%40sulfabril.com.brmar...@sulfabril.com.br Date: Mon, 19 Jul 2010 13:03:50 -0300 Subject: Re: [delphi-br] [ ClientDataSet atualizar base offline ] Ola Dirlei !! desculpe , mas nao captei a mensagem !! como parsear ?? terei dois XML/CDS cliente.xml e inclusao.xml ??? Att. MArcio At 11:14 19/7/2010 -0300, you wrote: Se entendi corretamente, você poderia gerar um XML/MyBase com o delta (registros incluidos, alterados e excluidos), parsear esse delta no cliente e efetivar as alterações no XML/MyBase definitivo. -- Dirlei Dionísio Novo artigo: // Não comente seu código http://MaisQueBomCodigo.blogspot.comhttp://MaisQueBomCodigo.blogspot.c omhttp://MaisQueBomCodigo.blogspot.com Em 19 de julho de 2010 10:50, Marcio mailto:marcio%40sulfabril.com.brmailto:marcio%40sulfabril.com.brmarc i...@sulfabril.com.br escreveu: Ola Pessoal . estou criando uma aplicação on/offline , gostaria de saber se é possivel atualizar parcialmente o clientDataset ( mybase XML ) ?? ou seja ja baixei os dados dos clientes (sqlConetion SqlDataset provider clienteDatSet ) hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR , baixar so os cliente alterados . ps no servidor sempre que altero um dado fica gravado a data de modificacao ,, ai poderia comparar com a ultima data do arquivo XML e tal . mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a tabela de cliente .. alguem ja viu algo parecido ?? alguem tem algum material para eu estudar?? Att, Marcio. Blumenau-SC [As partes desta mensagem que não continham texto foram removidas] __ TRANSFORME SUAS FOTOS EM EMOTICONS PARA O MESSENGER. CLIQUE AQUI PARA COMEÇAR. http://ilm.windowslive.com.br/?ocid=ILM:Live:Hotmail:Tagline:senDimensao:TRANSFORME78:-http://ilm.windowslive.com.br/?ocid=ILM:Live:Hotmail:Tagline:senDimensao:TRANSFORME78:- [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] [ClientDataSet atualizar base offline ]
Marcio, vou te sugerir a maneira mais simples de resolver isso que me vem à mente agora, mas com certeza essa não é a única alternativa. Vamos lá. PS1: Estou pertindo do princípio que a atualização ocorre apenas no sentido SERVIDOR-CLIENTE, como eu entendi. Na tabela transportadora, além do campo DataMod, você precisa também ter um campo para informar que tipo de operação foi feita. Poderia ser, por exemplo, TipoMod. Os valores possíveis seriam I, A e E, significando, Inclusão, Alteração e Exclusão, respectivamente. PS2: Quando uma transportadora for excluída no servidor, o registro não poderá ser fisicamente excluído até que os cliente tenham sincronizado essa exclusão com suas bases locais. Para sincronizar as alterações do servidor com os clientes, você faz o seguinte: 1 - um select * from Transportadora where DATAMOD:DATA_E_HORA_DA_ULTIMA_SINCRONIZACAO_DO_CLIENTE 2 - carrega o dspTransportadora.cds para a memória 3 - percorre cada registro da query executada no servidor e verifica o campo TipoMod. - se o conteudo for: - I, INCLUI o registro no dataset que foi carregado com o dspTransportadora.cds - A, localiza o registro no dataset que foi carregado com o dspTransportadora.cds e faz a ALTERACAO - E, localiza o registro no dataset que foi carregado com o dspTransportadora.cds e faz a EXCLUSAO 4 - salva o dataset que foi carregado com o dspTransportadora.cds em disco 5 - grava em algum lugar a data e hora da última sincronização do cliente com o servidor. Posso ter esquecido algum detalhe, mas de modo geral, essa é uma solução possível para o seu problema. Um abraço, -- Dirlei Dionísio Novo artigo: // Não comente seu código http://MaisQueBomCodigo.blogspot.com Em 19 de julho de 2010 13:31, Marcio mar...@sulfabril.com.br escreveu: deixa eu explicar melhor para baixar a base faco desta maneira : Aplicação servidora : SqlDataset : Select * from transportadora Aplicação Cliente : Cds := TClientDataSet.Create(nil); Cds.RemoteServer := SoapConnection1; SoapConnection1.Connected := True; Cds.Close; Cds.ProviderName := 'dspTransportadora' ; Cds.Open; //Cds.SaveToFile('dspTransportadora' + '.XML'); Cds.SaveToFile('dspTransportadora.cds',dfBinary); Cds.Free; ShowMessage('arquivo baixado'); exit; desta maneira baixei todas as transportadora , mas se eu quiser so atualizar o dspTransportadora.xml ? se eu fizer um select , SqlDataset : Select * from transportadora where DataMod = :DataMod como faco para unir com o dspTransportadora.xml com os registros do sql ?? att. Marcio At 07:33 19/7/2010 -0700, you wrote: Amigo como você falou que grava a data de alteração de cada registro você pode simplesmente gerar um SQL (select) que filtre somente pela data de alteração, poderia ser registro a registro porque ai você teria como comparar a data do registro do arquivo local com a do que estar no Server. Estando usando ClientDataSet + XML é só desativar o ChangeLog do CDS para não manter o registro antigo. isso resolve? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com delphijean%40gmail.com e-mail: delphij...@yahoo.com.br delphijean%40yahoo.com.br === De: Marcio mar...@sulfabril.com.br marcio%40sulfabril.com.br Para: n...@yahoogrupos.com.br NDDV%40yahoogrupos.com.br Enviadas: Segunda-feira, 19 de Julho de 2010 11:15:58 Assunto: Re: [NDDV] [ ClientDataSet atualizar base offline ] Daniel ,obrigado pela atençao. Bom .. Estou tentando(tenho) construir uma aplicacao para os vendedores externos da empresa . esta aplicao vai ser off-line / online. os vendedores antes de ir ao cliente baixam a base com os dados atualizados ou uma vez por semana .. estou baixando os dados via SOAP , mas o problema é se cada vez que atualizar a base cliente tiver que trazer tudo , fica muito pesado . pretendo atualizar a BASE cliente somente com os registros novos no servidor . estive pesquisando sobre compressao de dados no datapack mais nao encontrei nada . é possivel isso ?? At. Marcio [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] [ClientDataSet atualizar base offline ]
Pra juntar dados, vc pode usar o método AppendData. Vc já tem um xml salvo, então vc carrega ele normalmente. Então vc faz um select com os registros alterados e carrega em outro ClientDataset e usa o AppendData. vDataSetLocal.LoadFromFile('dspTransportadora.cds'); vDataSetAlteracoes := DadosAlterados do servidor. vDataSetLoca.AppendData(vDataSetAlteracoes.Data, True); Acredito que funcione. Em 19 de julho de 2010 13:31, Marcio mar...@sulfabril.com.br escreveu: deixa eu explicar melhor para baixar a base faco desta maneira : Aplicação servidora : SqlDataset : Select * from transportadora Aplicação Cliente : Cds := TClientDataSet.Create(nil); Cds.RemoteServer := SoapConnection1; SoapConnection1.Connected := True; Cds.Close; Cds.ProviderName := 'dspTransportadora' ; Cds.Open; //Cds.SaveToFile('dspTransportadora' + '.XML'); Cds.SaveToFile('dspTransportadora.cds',dfBinary); Cds.Free; ShowMessage('arquivo baixado'); exit; desta maneira baixei todas as transportadora , mas se eu quiser so atualizar o dspTransportadora.xml ? se eu fizer um select , SqlDataset : Select * from transportadora where DataMod = :DataMod como faco para unir com o dspTransportadora.xml com os registros do sql ?? att. Marcio At 07:33 19/7/2010 -0700, you wrote: Amigo como você falou que grava a data de alteração de cada registro você pode simplesmente gerar um SQL (select) que filtre somente pela data de alteração, poderia ser registro a registro porque ai você teria como comparar a data do registro do arquivo local com a do que estar no Server. Estando usando ClientDataSet + XML é só desativar o ChangeLog do CDS para não manter o registro antigo. isso resolve? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com delphijean%40gmail.com e-mail: delphij...@yahoo.com.br delphijean%40yahoo.com.br === De: Marcio mar...@sulfabril.com.br marcio%40sulfabril.com.br Para: n...@yahoogrupos.com.br NDDV%40yahoogrupos.com.br Enviadas: Segunda-feira, 19 de Julho de 2010 11:15:58 Assunto: Re: [NDDV] [ ClientDataSet atualizar base offline ] Daniel ,obrigado pela atençao. Bom .. Estou tentando(tenho) construir uma aplicacao para os vendedores externos da empresa . esta aplicao vai ser off-line / online. os vendedores antes de ir ao cliente baixam a base com os dados atualizados ou uma vez por semana .. estou baixando os dados via SOAP , mas o problema é se cada vez que atualizar a base cliente tiver que trazer tudo , fica muito pesado . pretendo atualizar a BASE cliente somente com os registros novos no servidor . estive pesquisando sobre compressao de dados no datapack mais nao encontrei nada . é possivel isso ?? At. Marcio [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] ClientDataSet - Out Of Memory
me metendo na conversa esse seu framework não poderia manipular um TDataSet ou um _RecordSet ao invés do cds? ai vc faria a consulta normalmente como o Fabiano falou... e já passaria o dataset ou recordset da consulta, independente do componente que estiver utilizando (cds, qry, procedure... ) sem necessidade de armazenar esses dados duplicados na memória... o/ Em 16/07/2010 23:44, Valdemir (yahoo) escreveu: na verdade .. montei um framework para gerar arquivos do governo... ele gera tanto arquivos de posição fixa (como o Sintegra), como arquivos separados com pipe (sped), entre outras funções ele visualiza os arquivos TXT como o Sintegra faz com o arquivo dele neste framework eu cadastro o layout, ou seja os registros, e cada campo com tamanho e tipo de arquivo... e eu ao gerar o txt, ele já faz algumas conferencias de acordo com o layout No sped, vc tem alguns registros Ex...I030 , que tem um campo com o total de registros do I030 que tem a quantidade de linhas do arquivo, ou seja logo no inicio do arquivo ele já me pede o total de linhas, neste caso eu tenho duas opções ou antes de gerar esta linha simulo a geração para saber o total de linhas, ou então arrumo um jeito de editar a linha apos eu gerar o arquivo inteiro. Entre gerar o arquivo e abrir o texto procurando por registro/posição no arquivo txt e ai substituir, eu preferi gravar tudo em cds e manipular o cds alterando o que é necessário From: Fabiano Moura Sent: Friday, July 16, 2010 10:49 PM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] ClientDataSet - Out Of Memory *Boa noite!* Valdemir, por que você pega os dados da tabela e gera no clientdataset, não é mais fácil você pegar (restaurar) os dados do banco e jogar direto no arquivo texto? *Obrigado,* ** *Fabiano* [As partes desta mensagem que não continham texto foram removidas]
Res: [delphi-br] ClientDataSet - Out Of Memory
Olá amigo qual versão do delphi você tá usando e qual SPED você star gerando o txt, Fiscal ou Contabil? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br === De: Valdemir (yahoo) valdemi...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 15 de Julho de 2010 18:08:49 Assunto: [delphi-br] ClientDataSet - Out Of Memory Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
delphi 2010, sped contabil... com mais ou menos 400 mil lançamentos no ano de 2009 From: Jean Barreiros Sent: Friday, July 16, 2010 1:23 PM To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] ClientDataSet - Out Of Memory Olá amigo qual versão do delphi você tá usando e qual SPED você star gerando o txt, Fiscal ou Contabil? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br === De: Valdemir (yahoo) valdemi...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 15 de Julho de 2010 18:08:49 Assunto: [delphi-br] ClientDataSet - Out Of Memory Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
*Boa noite!* Valdemir, por que você pega os dados da tabela e gera no clientdataset, não é mais fácil você pegar (restaurar) os dados do banco e jogar direto no arquivo texto? *Obrigado,* ** *Fabiano* Em 16 de julho de 2010 22:31, Valdemir (yahoo) valdemi...@yahoo.com.brescreveu: delphi 2010, sped contabil... com mais ou menos 400 mil lançamentos no ano de 2009 From: Jean Barreiros Sent: Friday, July 16, 2010 1:23 PM To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] ClientDataSet - Out Of Memory Olá amigo qual versão do delphi você tá usando e qual SPED você star gerando o txt, Fiscal ou Contabil? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br === De: Valdemir (yahoo) valdemi...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 15 de Julho de 2010 18:08:49 Assunto: [delphi-br] ClientDataSet - Out Of Memory Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
na verdade .. montei um framework para gerar arquivos do governo... ele gera tanto arquivos de posição fixa (como o Sintegra), como arquivos separados com pipe (sped), entre outras funções ele visualiza os arquivos TXT como o Sintegra faz com o arquivo dele neste framework eu cadastro o layout, ou seja os registros, e cada campo com tamanho e tipo de arquivo... e eu ao gerar o txt, ele já faz algumas conferencias de acordo com o layout No sped, vc tem alguns registros Ex...I030 , que tem um campo com o total de registros do I030 que tem a quantidade de linhas do arquivo, ou seja logo no inicio do arquivo ele já me pede o total de linhas, neste caso eu tenho duas opções ou antes de gerar esta linha simulo a geração para saber o total de linhas, ou então arrumo um jeito de editar a linha apos eu gerar o arquivo inteiro. Entre gerar o arquivo e abrir o texto procurando por registro/posição no arquivo txt e ai substituir, eu preferi gravar tudo em cds e manipular o cds alterando o que é necessário From: Fabiano Moura Sent: Friday, July 16, 2010 10:49 PM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] ClientDataSet - Out Of Memory *Boa noite!* Valdemir, por que você pega os dados da tabela e gera no clientdataset, não é mais fácil você pegar (restaurar) os dados do banco e jogar direto no arquivo texto? *Obrigado,* ** *Fabiano* Em 16 de julho de 2010 22:31, Valdemir (yahoo) valdemi...@yahoo.com.brescreveu: delphi 2010, sped contabil... com mais ou menos 400 mil lançamentos no ano de 2009 From: Jean Barreiros Sent: Friday, July 16, 2010 1:23 PM To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] ClientDataSet - Out Of Memory Olá amigo qual versão do delphi você tá usando e qual SPED você star gerando o txt, Fiscal ou Contabil? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br === De: Valdemir (yahoo) valdemi...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 15 de Julho de 2010 18:08:49 Assunto: [delphi-br] ClientDataSet - Out Of Memory Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] ClientDataSet - Out Of Memory
Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
Eu já tive problemas utilizando TClientDataSet em memória parecido com isso devido a grande quantidade de registros, sem falar no desempenho deplorável. Agora utilizo um componente da devart chamado VirtualTable que vem junto com o ODAC da devart, mais é pago. Se não me engano, o JEDI VCl tem um componente chamado TJvMemoryTable, nunca usei, mais acredito ser mais otimizado. Em 15 de julho de 2010 18:08, Valdemir (yahoo) valdemi...@yahoo.com.brescreveu: Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] ClientDataSet - Out Of Memory
Valdemir, se você prefere jogar os dados num ClientDataset para depois passar para um TXT, não precisa acumular todos os dados no ClientDataset para só no final gravar no TXT. Faça isso registro a registro, assim você só manterá em memória um registro por vez. -- Dirlei Dionísio http://MaisQueBomCodigo.blogspot.com Em 15 de julho de 2010 18:19, Fabricio Colombo fabricio.colombo@gmail.com escreveu: Eu já tive problemas utilizando TClientDataSet em memória parecido com isso devido a grande quantidade de registros, sem falar no desempenho deplorável. Agora utilizo um componente da devart chamado VirtualTable que vem junto com o ODAC da devart, mais é pago. Se não me engano, o JEDI VCl tem um componente chamado TJvMemoryTable, nunca usei, mais acredito ser mais otimizado. Em 15 de julho de 2010 18:08, Valdemir (yahoo) valdemi...@yahoo.com.brescreveu: Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM
[delphi-br] Clientdataset grava registro antigo em XML
Estou gerando um arquivo de configuração, e como é apenas um registro estou usando um clientdataset e salvando em um xml. Estou usando Clientdataset.LoadFromFile e ClientDataset.SaveToFile. Funciona normalmente, mas o problema é que quando altero algum campo, o registro anterior é guardado no xml, apesar do clientdataset sempre mostrar apenas um registro. Dessa forma o tamanho do arquivo vai aumentando cada vez mais. Tem como atualizar o registro sem guardar os dados antigos no XML? [As partes desta mensagem que não continham texto foram removidas]
RES: [delphi-br] Clientdataset grava registro antigo em XML
Coloque assim: ClientDataSet.LogChanges:=False; Acredito que irá funcionar. Teruel De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Alisson Enviada em: terça-feira, 13 de julho de 2010 12:05 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] Clientdataset grava registro antigo em XML Estou gerando um arquivo de configuração, e como é apenas um registro estou usando um clientdataset e salvando em um xml. Estou usando Clientdataset.LoadFromFile e ClientDataset.SaveToFile. Funciona normalmente, mas o problema é que quando altero algum campo, o registro anterior é guardado no xml, apesar do clientdataset sempre mostrar apenas um registro. Dessa forma o tamanho do arquivo vai aumentando cada vez mais. Tem como atualizar o registro sem guardar os dados antigos no XML? [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Clientdataset grava registro antigo em XML
Gustavo, funcionou. Só tenho que ter o cuidado de colocar o código logo após a abertura do Clientdataset. Se colocar após editar o client não funciona. Valeu, muito obrigado! Alisson - Original Message - From: Gustavo Teruel To: delphi-br@yahoogrupos.com.br Sent: Tuesday, July 13, 2010 12:39 PM Subject: RES: [delphi-br] Clientdataset grava registro antigo em XML Coloque assim: ClientDataSet.LogChanges:=False; Acredito que irá funcionar. Teruel [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] ClientDataSet - Delete em registro com referência d e FK
Boa tarde pessoal. Usando DBX e Firebird, quero que ao tentar deletar um registro, caso retornado um erro por relacionamento de chave estrangeira, alterar o valor do campo VISIVEL para 'F', sem incrementar o retorno do ApplyUpdates. Tentei verificar a mensagem da exceção do OnReconcileError e repassar mas não deu. Algém pode sugerir uma solução? [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet
Eny, não uso banco de dados na aplicação. Recebo as informações por socket e as vou salvando em um ClientDataSet e com o tempo as vou processando. Para que ela não seja reprocessada, gostaria de marcar com um X em um determinado campo no processamento daquele determinado registro. Logo depois do processamento de todos os registros, quero apagar os que estiverem marcado com o X para liberar memória. Pensei em fazer isso, pois enquanto faço o processamento, o sistema pode estar recebendo novos registros. Em 1 de maio de 2010 20:48, Eny Urias enyur...@yahoo.com.br escreveu: Você tem duas opções... Aplicar um filtro com o estado que vc quer e fazer um while e ir apagando um por um processo + demorado... Usar um componente para fazer o delete no banco usando um parametro com o estado que vc quer.. processo + rapido... Aí vai de vc escolher -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Marcos Abreu Ferreira maferreira...@gmail.commaferreira.f2%40gmail.com Para: lista-del...@yahoogrupos.com.br lista-delphi%40yahoogrupos.com.br; delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Sábado, 1 de Maio de 2010 18:35:26 Assunto: [delphi-br] ClientDataSet Pessoal, Tenho um clientdataset com 3 campos -Codigo (string,12) -Nome (string,35) -Estado (string,2) Preciso colocar uma ação num botao onde eu vá apagar os registros de um determinado estado no clientdataset. Como fazer? Att, marcos [As partes desta mensagem que não continham texto foram removidas]
RES: [delphi-br] ClientDataSet
Informe-se no help do Delphi sobre a propriedade UpdateStatus do TClientDataSet. Acredito que este seja o caminho. Veja exemplo de uso desta propriedade (extraído do help do Delphi 7). procedure TDBClientTest.ProviderUpdateData(Sender: TObject; DataSet: TCustomClientDataSet); begin with DataSet do while not EOF do begin if UpdateStatus = usDeleted then LogDelete(DataSet, UserName, Date, Time); Next; end; end; Sds. De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Marcos Abreu Ferreira Enviada em: segunda-feira, 3 de maio de 2010 11:01 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] ClientDataSet Eny, não uso banco de dados na aplicação. Recebo as informações por socket e as vou salvando em um ClientDataSet e com o tempo as vou processando. Para que ela não seja reprocessada, gostaria de marcar com um X em um determinado campo no processamento daquele determinado registro. Logo depois do processamento de todos os registros, quero apagar os que estiverem marcado com o X para liberar memória. Pensei em fazer isso, pois enquanto faço o processamento, o sistema pode estar recebendo novos registros. Em 1 de maio de 2010 20:48, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Você tem duas opções... Aplicar um filtro com o estado que vc quer e fazer um while e ir apagando um por um processo + demorado... Usar um componente para fazer o delete no banco usando um parametro com o estado que vc quer.. processo + rapido... Aí vai de vc escolher -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Marcos Abreu Ferreira maferreira...@gmail.com mailto:maferreira.f2%40gmail.com maferreira.f2%40gmail.com Para: lista-del...@yahoogrupos.com.br mailto:lista-delphi%40yahoogrupos.com.br lista-delphi%40yahoogrupos.com.br; delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Sábado, 1 de Maio de 2010 18:35:26 Assunto: [delphi-br] ClientDataSet Pessoal, Tenho um clientdataset com 3 campos -Codigo (string,12) -Nome (string,35) -Estado (string,2) Preciso colocar uma ação num botao onde eu vá apagar os registros de um determinado estado no clientdataset. Como fazer? Att, marcos [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet
Marcos, Sugiro o download de uma aplicação do Guinther Pauli que exemplifica o que você precisa e muito mais... http://cc.embarcadero.com/Item/17644 Se vc tem cadastro no CodeCentral da Embarcadero, basta entrar com seu login e baixar o source. No topo da página tem um link LOG ON, clique ali e na próxima tela preencha seu dados ou clique no Join Today para fazer um cadastro.. Eu recomendo, tem muito conteúdo interessante e o melhor, free. Att, José Luis - Original Message - From: Rubem Rocha rubem.ro...@dtmanaus.com.br To: delphi-br@yahoogrupos.com.br Sent: Monday, May 03, 2010 12:02 PM Subject: RES: [delphi-br] ClientDataSet Informe-se no help do Delphi sobre a propriedade UpdateStatus do TClientDataSet. Acredito que este seja o caminho. Veja exemplo de uso desta propriedade (extraído do help do Delphi 7). procedure TDBClientTest.ProviderUpdateData(Sender: TObject; DataSet: TCustomClientDataSet); begin with DataSet do while not EOF do begin if UpdateStatus = usDeleted then LogDelete(DataSet, UserName, Date, Time); Next; end; end; Sds. De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Marcos Abreu Ferreira Enviada em: segunda-feira, 3 de maio de 2010 11:01 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] ClientDataSet Eny, não uso banco de dados na aplicação. Recebo as informações por socket e as vou salvando em um ClientDataSet e com o tempo as vou processando. Para que ela não seja reprocessada, gostaria de marcar com um X em um determinado campo no processamento daquele determinado registro. Logo depois do processamento de todos os registros, quero apagar os que estiverem marcado com o X para liberar memória. Pensei em fazer isso, pois enquanto faço o processamento, o sistema pode estar recebendo novos registros. Em 1 de maio de 2010 20:48, Eny Urias enyur...@yahoo.com.br mailto:enyurias%40yahoo.com.br escreveu: Você tem duas opções... Aplicar um filtro com o estado que vc quer e fazer um while e ir apagando um por um processo + demorado... Usar um componente para fazer o delete no banco usando um parametro com o estado que vc quer.. processo + rapido... Aí vai de vc escolher -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Marcos Abreu Ferreira maferreira...@gmail.com mailto:maferreira.f2%40gmail.com maferreira.f2%40gmail.com Para: lista-del...@yahoogrupos.com.br mailto:lista-delphi%40yahoogrupos.com.br lista-delphi%40yahoogrupos.com.br; delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Enviadas: Sábado, 1 de Maio de 2010 18:35:26 Assunto: [delphi-br] ClientDataSet Pessoal, Tenho um clientdataset com 3 campos -Codigo (string,12) -Nome (string,35) -Estado (string,2) Preciso colocar uma ação num botao onde eu vá apagar os registros de um determinado estado no clientdataset. Como fazer? Att, marcos [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM
[delphi-br] ClientDataSet
Pessoal, Tenho um clientdataset com 3 campos - Codigo (string,12) - Nome (string,35) -Estado (string,2) Preciso colocar uma ação num botao onde eu vá apagar os registros de um determinado estado no clientdataset. Como fazer? Att, marcos [As partes desta mensagem que não continham texto foram removidas]
Res: [delphi-br] ClientDataSet
Você tem duas opções... Aplicar um filtro com o estado que vc quer e fazer um while e ir apagando um por um processo + demorado... Usar um componente para fazer o delete no banco usando um parametro com o estado que vc quer.. processo + rapido... Aí vai de vc escolher -- Eny Trova Urias Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, mas um hábito- Aristóteles De: Marcos Abreu Ferreira maferreira...@gmail.com Para: lista-del...@yahoogrupos.com.br; delphi-br@yahoogrupos.com.br Enviadas: Sábado, 1 de Maio de 2010 18:35:26 Assunto: [delphi-br] ClientDataSet Pessoal, Tenho um clientdataset com 3 campos - Codigo (string,12) - Nome (string,35) -Estado (string,2) Preciso colocar uma ação num botao onde eu vá apagar os registros de um determinado estado no clientdataset. Como fazer? Att, marcos [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet com Criptografia
- como recuperar os dados e descriptografar antes de mostrá-lo em um dbgrid Uma alternativa é recuperar os dados num dataset e descriptografar o conteúdo em outro dataset, que estará associado ao grid. - como fica a pra fazer um sort, por exemplo? Se o dataset onde os dados descriptografados serão armazenados for um TClientDataset, você pode usar índices no próprio ClientDataset. Dirlei. pcedisi escreveu: Boa noite! Estou querendo criptografar dados antes de gravá-los na base. Estou usando um componente JEDI para isso. Minha dúvida é: como recuperar os dados e descriptografar antes de mostrá-lo em um dbgrid e também como fica a pra fazer um sort, por exemplo? Agradeço se alguém puder dar umas dicas de como proceder. Paulo
[delphi-br] ClientDataSet com Criptografia
Boa noite! Estou querendo criptografar dados antes de gravá-los na base. Estou usando um componente JEDI para isso. Minha dúvida é: como recuperar os dados e descriptografar antes de mostrá-lo em um dbgrid e também como fica a pra fazer um sort, por exemplo? Agradeço se alguém puder dar umas dicas de como proceder. Paulo
[delphi-br] ClientDataSet, Master Detail, atualizacao de valor no campo master
Bom dia galera tenho a seguinte situacao: CDS_MASTER --CDS_DETAIL1 ( ITEM DE CDS_MASTER) --CDS_DETAIL2 (ITEM DE CDS_MASTER) CDS_SUB_DETAIL3 (ITEM DE CDS_DETAIL2) todos os fields dos ClientDataSets estao configurados ([pfInUpdate,pfInWhere,pfInKey] p/ os PK, e [pfInUpdate] para os demais), do SqlDataSet tambem, e o DataSetProvider está com o UpdadeMod em WhereKeyOnly, e o PropagateChanges em True; no Evento AfterInsert de todos os CDSs, eu passo um valor temporario para o Field ID da tabela em questao, e no Evento BeforeUpdateRecord do provider eu chamo uma funcao que pega o ultimo id do banco e passo para o field atraves da funcao Get_LastID;. if UpdateKind = ukInsert then if SourceDS = sql_MASTER then DeltaDS.FieldByName('ID_MASTER).NewValue := Get_LastID else if SourceDS = sql_DETAIL1 then DeltaDS.FieldByName('ID_DETAIL1').NewValue := Get_LastID else if SourceDS = sql_DETAIL2 then DeltaDS.FieldByName('ID_DETAIL2').NewValue := Get_LastID else if SourceDS = sql_SUB_DETAIL3 then DeltaDS.FieldByName('ID_SUB_DETAIL3').NewValue := Get_LastID; um exemplo para facilitar o entendimento: Insiro um novo registro, atribuo o valor aleatorio para o ID_MASTER ex: 1552; Insiro um DETAIL1, atribuo o valor aleatorio para o ID_DETAIL1 ex: 3256; Insiro um DETAIL2, atribuo o valor aleatorio para o ID_DETAIL2 ex: 4458; Insiro um SUB_DETAIL3, atribuo o valor aleatorio para o ID_SUB_DETAIL3 ex: 9875; mando salvar, o metodo BeforeUpdateRecord é chamado; A funcao Get_LastID, pega o valor do ultimo ID_MASTER cadastrado, e já insere + 1 e retorna o valor 95; atribuo esse valor ao Field ID_MASTER. OK; quando passa para o sql_DETAIL1, faço a mesma coisa, é retornado o valor 852; porem dá um erro de violacao de chave estrangeira pois o Field ID_MASTER do DeltaDS do CDS_DETAIL1 ainda está com o valor antigo ( 1552 ); teoricamente o provider, apos eu alterar o valor do ID do CDS_MASTER, nao deveria passar essa altualização para todos os IDs vinculados a ele ? vlw. [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Lookup Lento
outro detalhe, procure não colocar no oncalcfields, chamadas de acesso ao banco, pois em todas alteração de todos os campos, que for feita nos campos do cds, eu disse todas, o método calcfields é chamado, isso pode ocasionar lentidão. Nivaldo Stainle escreveu: entendi, mas o que deixa com a pulga atrás da orelha é que com a mesma sintaxe e modelo, o BDE é mais rápido do que o CDS, é isto que não entendo, estou trocando para algo melhor pelo que estou lendo e no entanto estou vendo outra coisa na prática, ou seja, o que eu fazia com o BDE não estou fazendo com BSS, ClientDataSet, etc.; pelo menos com a mesma velocidade, acho que estou fazendo algo errado, é isto que quero descobrir. Stainle --- Em qua, 13/5/09, Evandro Siqueira vans...@gmail.com mailto:vansiqq%40gmail.com escreveu: De: Evandro Siqueira vans...@gmail.com mailto:vansiqq%40gmail.com Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Data: Quarta-feira, 13 de Maio de 2009, 15:44 Stainle, Como vc informou qual o banco de dados, estou pressupondo que seja o firebird e neste contexto, sugiro 2 coisas: 1) no Seleciona( select * from ... )... substitua o * pelo nome dos campos que vc irá utilizar. Explicando: qd vc utiliza select * from tabela, provoca um fetch all nela mesmo que a instrução contenha uma cláusula where, o que tornará a consulta lenta, dependendo do tamanho da tabela 2) se a lookup source contiver muitas linhas, sugiro procurar uma outra alternativa, pq este componente é perfeito para aplicações desktop mas em aplicações client server ou multicamadas, um lookup de muitas linhas pode se tornar um pesadelo em termos de performance. stainle2003 escreveu: Boa Tarde, novamente pedindo ajuda. Estou gradativamente mudando meu sistema de BDE para Multicamadas, portando deixo de usar Query para usar ClientDataSet acessando a máquina que tem o BSS, o que acontece: Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA dentre 4 chaves(00211001, 00211***, 0021, 002*), por exemplo, de uma tabela para que eu ache um valor para calcular o Preço Líquido por exemplo da tabela principal; acontece que no BDE(query) funciona com uma velocidade até que razoável, mas ao mudar para o ClientDataSet, fica uma calamidade, até mudei a função chamada no OnCalcFields para ao invés de SQL eu passei a usar da forma abaixo, mas mesmo assim não me alegrou, será que vou ter que continuar a usar o BDE, neste caso ??? procedure TDados.ver_desconto; var wscodigo : string; begin wscodigo := Dados.CDSEstCodes.Value; Dados.CDSDes.Close; Dados.CDSDes.IndexName := 'DEFAULT_ORDER'; Dados.CDSDes.Open; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca.AsString := copy(wscodigo, 8, 3); if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := '*'; Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := '*'; Dados.CDSDesSub_Ini.AsString := '*'; Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; end; end; procedure TDados.CDSEstCalcFields(DataSet: TDataSet); begin ver_desconto(); Dados.CDSEstLiquido.Value := Dados.CDSEstPv1.Value * (1 - Dados.CDSEstDesconto.Value / 100); end; procedure TDados.CDSDesBeforeOpen(DataSet: TDataSet); begin Dados.CDSDes.IndexName := 'DEFAULT_ORDER'; end; grato Stainle -- []’s. Evandro Siqueira Programador de Sistemas L’essentiel Lingerie (79) 3254-5511 Ramal 218 skype: evandro.lessentiel
Re: [delphi-br] ClientDataSet - Lookup Lento
entendi, acho que melhora muito se também colocar a função no servidor(BSS), não acha ? Stainle --- Em qui, 14/5/09, berdam berdamzi...@yahoo.com.br escreveu: De: berdam berdamzi...@yahoo.com.br Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi-br@yahoogrupos.com.br Data: Quinta-feira, 14 de Maio de 2009, 18:43 outro detalhe, procure não colocar no oncalcfields, chamadas de acesso ao banco, pois em todas alteração de todos os campos, que for feita nos campos do cds, eu disse todas, o método calcfields é chamado, isso pode ocasionar lentidão. Nivaldo Stainle escreveu: entendi, mas o que deixa com a pulga atrás da orelha é que com a mesma sintaxe e modelo, o BDE é mais rápido do que o CDS, é isto que não entendo, estou trocando para algo melhor pelo que estou lendo e no entanto estou vendo outra coisa na prática, ou seja, o que eu fazia com o BDE não estou fazendo com BSS, ClientDataSet, etc.; pelo menos com a mesma velocidade, acho que estou fazendo algo errado, é isto que quero descobrir. Stainle --- Em qua, 13/5/09, Evandro Siqueira vans...@gmail. com mailto:vansiqq% 40gmail.com escreveu: De: Evandro Siqueira vans...@gmail. com mailto:vansiqq% 40gmail.com Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi...@yahoogrup os.com.br mailto:delphi- br%40yahoogrupos .com.br Data: Quarta-feira, 13 de Maio de 2009, 15:44 Stainle, Como vc informou qual o banco de dados, estou pressupondo que seja o firebird e neste contexto, sugiro 2 coisas: 1) no Seleciona( select * from ... )... substitua o * pelo nome dos campos que vc irá utilizar. Explicando: qd vc utiliza select * from tabela, provoca um fetch all nela mesmo que a instrução contenha uma cláusula where, o que tornará a consulta lenta, dependendo do tamanho da tabela 2) se a lookup source contiver muitas linhas, sugiro procurar uma outra alternativa, pq este componente é perfeito para aplicações desktop mas em aplicações client server ou multicamadas, um lookup de muitas linhas pode se tornar um pesadelo em termos de performance. stainle2003 escreveu: Boa Tarde, novamente pedindo ajuda. Estou gradativamente mudando meu sistema de BDE para Multicamadas, portando deixo de usar Query para usar ClientDataSet acessando a máquina que tem o BSS, o que acontece: Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA dentre 4 chaves(00211001, 00211***, 0021, 002*), por exemplo, de uma tabela para que eu ache um valor para calcular o Preço Líquido por exemplo da tabela principal; acontece que no BDE(query) funciona com uma velocidade até que razoável, mas ao mudar para o ClientDataSet, fica uma calamidade, até mudei a função chamada no OnCalcFields para ao invés de SQL eu passei a usar da forma abaixo, mas mesmo assim não me alegrou, será que vou ter que continuar a usar o BDE, neste caso ??? procedure TDados.ver_desconto ; var wscodigo : string; begin wscodigo := Dados.CDSEstCodes. Value; Dados.CDSDes. Close; Dados.CDSDes. IndexName := 'DEFAULT_ORDER' ; Dados.CDSDes. Open; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca .AsString := copy(wscodigo, 8, 3); if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca .AsString := '***'; if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := '*'; Dados.CDSDesNropeca .AsString := '***'; if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := '*'; Dados.CDSDesSub_ Ini.AsString := '*'; Dados.CDSDesNropeca .AsString := '***'; if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; end; end; procedure TDados.CDSEstCalcFi elds(DataSet: TDataSet); begin ver_desconto
Re: [delphi-br] ClientDataSet - Lookup Lento
em tempo, onde você sugere que eu coloque a chamada da função que vai ao banco ??? Stainle --- Em qui, 14/5/09, berdam berdamzi...@yahoo.com.br escreveu: De: berdam berdamzi...@yahoo.com.br Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi-br@yahoogrupos.com.br Data: Quinta-feira, 14 de Maio de 2009, 18:43 outro detalhe, procure não colocar no oncalcfields, chamadas de acesso ao banco, pois em todas alteração de todos os campos, que for feita nos campos do cds, eu disse todas, o método calcfields é chamado, isso pode ocasionar lentidão. Nivaldo Stainle escreveu: entendi, mas o que deixa com a pulga atrás da orelha é que com a mesma sintaxe e modelo, o BDE é mais rápido do que o CDS, é isto que não entendo, estou trocando para algo melhor pelo que estou lendo e no entanto estou vendo outra coisa na prática, ou seja, o que eu fazia com o BDE não estou fazendo com BSS, ClientDataSet, etc.; pelo menos com a mesma velocidade, acho que estou fazendo algo errado, é isto que quero descobrir. Stainle --- Em qua, 13/5/09, Evandro Siqueira vans...@gmail. com mailto:vansiqq% 40gmail.com escreveu: De: Evandro Siqueira vans...@gmail. com mailto:vansiqq% 40gmail.com Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi...@yahoogrup os.com.br mailto:delphi- br%40yahoogrupos .com.br Data: Quarta-feira, 13 de Maio de 2009, 15:44 Stainle, Como vc informou qual o banco de dados, estou pressupondo que seja o firebird e neste contexto, sugiro 2 coisas: 1) no Seleciona( select * from ... )... substitua o * pelo nome dos campos que vc irá utilizar. Explicando: qd vc utiliza select * from tabela, provoca um fetch all nela mesmo que a instrução contenha uma cláusula where, o que tornará a consulta lenta, dependendo do tamanho da tabela 2) se a lookup source contiver muitas linhas, sugiro procurar uma outra alternativa, pq este componente é perfeito para aplicações desktop mas em aplicações client server ou multicamadas, um lookup de muitas linhas pode se tornar um pesadelo em termos de performance. stainle2003 escreveu: Boa Tarde, novamente pedindo ajuda. Estou gradativamente mudando meu sistema de BDE para Multicamadas, portando deixo de usar Query para usar ClientDataSet acessando a máquina que tem o BSS, o que acontece: Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA dentre 4 chaves(00211001, 00211***, 0021, 002*), por exemplo, de uma tabela para que eu ache um valor para calcular o Preço Líquido por exemplo da tabela principal; acontece que no BDE(query) funciona com uma velocidade até que razoável, mas ao mudar para o ClientDataSet, fica uma calamidade, até mudei a função chamada no OnCalcFields para ao invés de SQL eu passei a usar da forma abaixo, mas mesmo assim não me alegrou, será que vou ter que continuar a usar o BDE, neste caso ??? procedure TDados.ver_desconto ; var wscodigo : string; begin wscodigo := Dados.CDSEstCodes. Value; Dados.CDSDes. Close; Dados.CDSDes. IndexName := 'DEFAULT_ORDER' ; Dados.CDSDes. Open; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca .AsString := copy(wscodigo, 8, 3); if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca .AsString := '***'; if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := '*'; Dados.CDSDesNropeca .AsString := '***'; if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := '*'; Dados.CDSDesSub_ Ini.AsString := '*'; Dados.CDSDesNropeca .AsString := '***'; if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; end; end; procedure TDados.CDSEstCalcFi elds(DataSet: TDataSet); begin ver_desconto
Re: [delphi-br] ClientDataSet - Lookup Lento
é, eu tbm já pensei nisso antes, fica complicado realmente, mas se puder armazenar isso em uma variável global fica melhor. Nivaldo Stainle escreveu: em tempo, onde você sugere que eu coloque a chamada da função que vai ao banco ??? Stainle --- Em qui, 14/5/09, berdam berdamzi...@yahoo.com.br mailto:berdamzinho%40yahoo.com.br escreveu: De: berdam berdamzi...@yahoo.com.br mailto:berdamzinho%40yahoo.com.br Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Data: Quinta-feira, 14 de Maio de 2009, 18:43 outro detalhe, procure não colocar no oncalcfields, chamadas de acesso ao banco, pois em todas alteração de todos os campos, que for feita nos campos do cds, eu disse todas, o método calcfields é chamado, isso pode ocasionar lentidão. Nivaldo Stainle escreveu: entendi, mas o que deixa com a pulga atrás da orelha é que com a mesma sintaxe e modelo, o BDE é mais rápido do que o CDS, é isto que não entendo, estou trocando para algo melhor pelo que estou lendo e no entanto estou vendo outra coisa na prática, ou seja, o que eu fazia com o BDE não estou fazendo com BSS, ClientDataSet, etc.; pelo menos com a mesma velocidade, acho que estou fazendo algo errado, é isto que quero descobrir. Stainle --- Em qua, 13/5/09, Evandro Siqueira vans...@gmail. com mailto:vansiqq% 40gmail.com escreveu: De: Evandro Siqueira vans...@gmail. com mailto:vansiqq% 40gmail.com Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi...@yahoogrup os.com.br mailto:delphi- br%40yahoogrupos .com.br Data: Quarta-feira, 13 de Maio de 2009, 15:44 Stainle, Como vc informou qual o banco de dados, estou pressupondo que seja o firebird e neste contexto, sugiro 2 coisas: 1) no Seleciona( select * from ... )... substitua o * pelo nome dos campos que vc irá utilizar. Explicando: qd vc utiliza select * from tabela, provoca um fetch all nela mesmo que a instrução contenha uma cláusula where, o que tornará a consulta lenta, dependendo do tamanho da tabela 2) se a lookup source contiver muitas linhas, sugiro procurar uma outra alternativa, pq este componente é perfeito para aplicações desktop mas em aplicações client server ou multicamadas, um lookup de muitas linhas pode se tornar um pesadelo em termos de performance. stainle2003 escreveu: Boa Tarde, novamente pedindo ajuda. Estou gradativamente mudando meu sistema de BDE para Multicamadas, portando deixo de usar Query para usar ClientDataSet acessando a máquina que tem o BSS, o que acontece: Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA dentre 4 chaves(00211001, 00211***, 0021, 002*), por exemplo, de uma tabela para que eu ache um valor para calcular o Preço Líquido por exemplo da tabela principal; acontece que no BDE(query) funciona com uma velocidade até que razoável, mas ao mudar para o ClientDataSet, fica uma calamidade, até mudei a função chamada no OnCalcFields para ao invés de SQL eu passei a usar da forma abaixo, mas mesmo assim não me alegrou, será que vou ter que continuar a usar o BDE, neste caso ??? procedure TDados.ver_desconto ; var wscodigo : string; begin wscodigo := Dados.CDSEstCodes. Value; Dados.CDSDes. Close; Dados.CDSDes. IndexName := 'DEFAULT_ORDER' ; Dados.CDSDes. Open; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca .AsString := copy(wscodigo, 8, 3); if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca .AsString := '***'; if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_ Ini.AsString := '*'; Dados.CDSDesNropeca .AsString := '***'; if Dados.CDSDes. GotoKey then begin Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; exit; end; Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; Dados.CDSDes. SetKey; Dados.CDSDesNrolinh
[delphi-br] ClientDataSet - Lookup Lento
Boa Tarde, novamente pedindo ajuda. Estou gradativamente mudando meu sistema de BDE para Multicamadas, portando deixo de usar Query para usar ClientDataSet acessando a máquina que tem o BSS, o que acontece: Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA dentre 4 chaves(00211001, 00211***, 0021, 002*), por exemplo, de uma tabela para que eu ache um valor para calcular o Preço Líquido por exemplo da tabela principal; acontece que no BDE(query) funciona com uma velocidade até que razoável, mas ao mudar para o ClientDataSet, fica uma calamidade, até mudei a função chamada no OnCalcFields para ao invés de SQL eu passei a usar da forma abaixo, mas mesmo assim não me alegrou, será que vou ter que continuar a usar o BDE, neste caso ??? procedure TDados.ver_desconto; var wscodigo : string; begin wscodigo := Dados.CDSEstCodes.Value; Dados.CDSDes.Close; Dados.CDSDes.IndexName := 'DEFAULT_ORDER'; Dados.CDSDes.Open; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca.AsString := copy(wscodigo, 8, 3); if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := '*'; Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := '*'; Dados.CDSDesSub_Ini.AsString := '*'; Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; end; end; procedure TDados.CDSEstCalcFields(DataSet: TDataSet); begin ver_desconto(); Dados.CDSEstLiquido.Value := Dados.CDSEstPv1.Value * (1 - Dados.CDSEstDesconto.Value / 100); end; procedure TDados.CDSDesBeforeOpen(DataSet: TDataSet); begin Dados.CDSDes.IndexName := 'DEFAULT_ORDER'; end; grato Stainle
Re: [delphi-br] ClientDataSet - Lookup Lento
Stainle, Como vc informou qual o banco de dados, estou pressupondo que seja o firebird e neste contexto, sugiro 2 coisas: 1) no Seleciona( select * from ... )... substitua o * pelo nome dos campos que vc irá utilizar. Explicando: qd vc utiliza select * from tabela, provoca um fetch all nela mesmo que a instrução contenha uma cláusula where, o que tornará a consulta lenta, dependendo do tamanho da tabela 2) se a lookup source contiver muitas linhas, sugiro procurar uma outra alternativa, pq este componente é perfeito para aplicações desktop mas em aplicações client server ou multicamadas, um lookup de muitas linhas pode se tornar um pesadelo em termos de performance. stainle2003 escreveu: Boa Tarde, novamente pedindo ajuda. Estou gradativamente mudando meu sistema de BDE para Multicamadas, portando deixo de usar Query para usar ClientDataSet acessando a máquina que tem o BSS, o que acontece: Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA dentre 4 chaves(00211001, 00211***, 0021, 002*), por exemplo, de uma tabela para que eu ache um valor para calcular o Preço Líquido por exemplo da tabela principal; acontece que no BDE(query) funciona com uma velocidade até que razoável, mas ao mudar para o ClientDataSet, fica uma calamidade, até mudei a função chamada no OnCalcFields para ao invés de SQL eu passei a usar da forma abaixo, mas mesmo assim não me alegrou, será que vou ter que continuar a usar o BDE, neste caso ??? procedure TDados.ver_desconto; var wscodigo : string; begin wscodigo := Dados.CDSEstCodes.Value; Dados.CDSDes.Close; Dados.CDSDes.IndexName := 'DEFAULT_ORDER'; Dados.CDSDes.Open; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca.AsString := copy(wscodigo, 8, 3); if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := '*'; Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := '*'; Dados.CDSDesSub_Ini.AsString := '*'; Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; end; end; procedure TDados.CDSEstCalcFields(DataSet: TDataSet); begin ver_desconto(); Dados.CDSEstLiquido.Value := Dados.CDSEstPv1.Value * (1 - Dados.CDSEstDesconto.Value / 100); end; procedure TDados.CDSDesBeforeOpen(DataSet: TDataSet); begin Dados.CDSDes.IndexName := 'DEFAULT_ORDER'; end; grato Stainle -- []’s. Evandro Siqueira Programador de Sistemas L’essentiel Lingerie (79) 3254-5511 Ramal 218 skype: evandro.lessentiel -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] ClientDataSet - Lookup Lento
entendi, mas o que deixa com a pulga atrás da orelha é que com a mesma sintaxe e modelo, o BDE é mais rápido do que o CDS, é isto que não entendo, estou trocando para algo melhor pelo que estou lendo e no entanto estou vendo outra coisa na prática, ou seja, o que eu fazia com o BDE não estou fazendo com BSS, ClientDataSet, etc.; pelo menos com a mesma velocidade, acho que estou fazendo algo errado, é isto que quero descobrir. Stainle --- Em qua, 13/5/09, Evandro Siqueira vans...@gmail.com escreveu: De: Evandro Siqueira vans...@gmail.com Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi-br@yahoogrupos.com.br Data: Quarta-feira, 13 de Maio de 2009, 15:44 Stainle, Como vc informou qual o banco de dados, estou pressupondo que seja o firebird e neste contexto, sugiro 2 coisas: 1) no Seleciona( select * from ... )... substitua o * pelo nome dos campos que vc irá utilizar. Explicando: qd vc utiliza select * from tabela, provoca um fetch all nela mesmo que a instrução contenha uma cláusula where, o que tornará a consulta lenta, dependendo do tamanho da tabela 2) se a lookup source contiver muitas linhas, sugiro procurar uma outra alternativa, pq este componente é perfeito para aplicações desktop mas em aplicações client server ou multicamadas, um lookup de muitas linhas pode se tornar um pesadelo em termos de performance. stainle2003 escreveu: Boa Tarde, novamente pedindo ajuda. Estou gradativamente mudando meu sistema de BDE para Multicamadas, portando deixo de usar Query para usar ClientDataSet acessando a máquina que tem o BSS, o que acontece: Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA dentre 4 chaves(00211001, 00211***, 0021, 002*), por exemplo, de uma tabela para que eu ache um valor para calcular o Preço Líquido por exemplo da tabela principal; acontece que no BDE(query) funciona com uma velocidade até que razoável, mas ao mudar para o ClientDataSet, fica uma calamidade, até mudei a função chamada no OnCalcFields para ao invés de SQL eu passei a usar da forma abaixo, mas mesmo assim não me alegrou, será que vou ter que continuar a usar o BDE, neste caso ??? procedure TDados.ver_desconto; var wscodigo : string; begin wscodigo := Dados.CDSEstCodes.Value; Dados.CDSDes.Close; Dados.CDSDes.IndexName := 'DEFAULT_ORDER'; Dados.CDSDes.Open; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca.AsString := copy(wscodigo, 8, 3); if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1); Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1); Dados.CDSDesSub_Ini.AsString := '*'; Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; exit; end; Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca'; Dados.CDSDes.SetKey; Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3)); Dados.CDSDesGrupo_Ini.AsString := '*'; Dados.CDSDesSub_Ini.AsString := '*'; Dados.CDSDesNropeca.AsString := '***'; if Dados.CDSDes.GotoKey then begin Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value; end; end; procedure TDados.CDSEstCalcFields(DataSet: TDataSet); begin ver_desconto(); Dados.CDSEstLiquido.Value := Dados.CDSEstPv1.Value * (1 - Dados.CDSEstDesconto.Value / 100); end; procedure TDados.CDSDesBeforeOpen(DataSet: TDataSet); begin Dados.CDSDes.IndexName := 'DEFAULT_ORDER'; end; grato Stainle -- []’s. Evandro Siqueira Programador de Sistemas L’essentiel Lingerie (79) 3254-5511 Ramal 218 skype: evandro.lessentiel -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Clientdataset + DataProvider + IBX + Form ShowModal
Pessoal, Problema novo e bem bem esquisito, O Sistema tem um formulário novo para envio de e-mail. E tem uma listagem dos e-mails cadastrados. Se consultar no IBOConsole, com a mesma consulta SQL do sistema, aparece os e-mails. No sistema, esse form é colocado ShowModal. Porém Os e-mails não aparecem. Coloquei até um botão para fechar e abrir, desabilitar os controles, habilitar depois, mas na grid não aparece nada. E não dá erro nos clientes. Aqui no escritório em todas as máquinas ficam OK. Preciso de alguma dica, não sei o que pode ser. Alex [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] ClientDataSet - Local
bom dia amigos, estou tentando usar o CDS localmente mas estou apanhando como nunca; não quero que ele tenha vínculo com banco algum, sómente arquivos local (cds ou xml), não sei qual o melhor, não sei se coloco um nome de arquivo no FILENAME ou se uso o SaveToFile e depois o LoadFromFile, só sei que se preciso criar um campo novo tenho que apagar todos os campos no FieldDefs para depois criar o novo campo e mesmo assim nem sempre consigo criar, estou apanhando com o Clear Data e CreateDataSet, e agora está me aparecendo uma menssagem ao usar o CDS local : Não é possivel criar uma nova transação porque a capacidade foi excedida, não sabia que existia limites de transação, aliás, nem sabia que existia transação para uso do CDS - Local. Se alguém tiver alguma solução será benvinda, pois estava usando com o Paradox e estava funcionando e não queria usar novamente o BDE e sim o CDS local; uso Delphi 07 grato Stainle
Re: [delphi-br] ClientDataSet
Vc Colocou a Midas.dll na máquina do cliente? Sds Emanuel Coutinho douglasmmm escreveu: Boa tarde. Estou fazendo uma manutenção em um sistema desenvolvido a muito tempo, é utilizado rxMemoriData. Coloquei um ClientDataSet para trabalhar dados em memória, enfim funciona tudo direitinho na minha maquina, mas ao colocar na maquina do cliente o programa simplismente não abre o form que contem o ClientDataSet. Notei que a configuração para compilar as packages foram alteradas (constam somente vcl;rtl;vclx;vcldb;qrpt;teeqr), alguem sabe como resolvo o problema sem remover o ClientDataSet?
Re: [delphi-br] ClientDataSet
coloque a unit MidasLib na clausula uses da unit, dessa forma não necessita copiar o midas.dll 2008/12/3 Coutinho - Yahoo [EMAIL PROTECTED]: Vc Colocou a Midas.dll na máquina do cliente? Sds Emanuel Coutinho douglasmmm escreveu: -- José Benedito Software Developer [EMAIL PROTECTED] www.jbsolucoes.net +55 19 8116-7826
[delphi-br] ClientDataSet
Boa tarde. Estou fazendo uma manutenção em um sistema desenvolvido a muito tempo, é utilizado rxMemoriData. Coloquei um ClientDataSet para trabalhar dados em memória, enfim funciona tudo direitinho na minha maquina, mas ao colocar na maquina do cliente o programa simplismente não abre o form que contem o ClientDataSet. Notei que a configuração para compilar as packages foram alteradas (constam somente vcl;rtl;vclx;vcldb;qrpt;teeqr), alguem sabe como resolvo o problema sem remover o ClientDataSet?
Re: [delphi-br] ClientDataSet
bom, como nao disse qual eh o erro q ocorre acredito q seja referente ao midas, adicione a unit midaslib no uses do seu form com o clientdataset 2008/12/2 douglasmmm [EMAIL PROTECTED]: Boa tarde. Estou fazendo uma manutenção em um sistema desenvolvido a muito tempo, é utilizado rxMemoriData. Coloquei um ClientDataSet para trabalhar dados em memória, enfim funciona tudo direitinho na minha maquina, mas ao colocar na maquina do cliente o programa simplismente não abre o form que contem o ClientDataSet. Notei que a configuração para compilar as packages foram alteradas (constam somente vcl;rtl;vclx;vcldb;qrpt;teeqr), alguem sabe como resolvo o problema sem remover o ClientDataSet? -- José Benedito Software Developer [EMAIL PROTECTED] www.jbsolucoes.net +55 19 8116-7826
Re: NÃO FUNCIONOU RES: [delphi-br] ClientDataSet
Desta forma não há como fazer com propriedades de nenhum componente. O TTable e o TClientDataSet possuem estruturas muito diferentes o que impossibita fazer o que você quer. Talvez a saída seja criar uma rotina que faça a leitura da estrutura e dos dados do TTable e retorne um TClientDataSet criado e populado. On 9/15/08, Juliano Silva - Yahoo [EMAIL PROTECTED] wrote: Pessoal Talvez eu não tenha colocado todos os dados referente ao meu problema, a questão é que preciso fazer um Assign de um componente TTable, e não de ClientDataSet para ClientDataSet... No meu caso, tenho um componente TTable que hora tem uma determinada informação, hora outra, e tenho que colocar estas informações dentro de um ClientDataSet as opções que foram postadas para que eu tente, funcionam se foram dois CDSs... Att. Juliano De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br [mailto: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br] Em nome de Evandro Ricardo Silvestre Enviada em: sexta-feira, 12 de setembro de 2008 08:49 Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Assunto: Re: [delphi-br] ClientDataSet Já tentou assim: cdsDestino.data := cdsOrigem.data Evandro Juliano Silva - Yahoo wrote: Vou tentar novamente, Pessoal tenho um ClientDataSet e quero fazer um Assign Local Data, mas em tempo de execução, ou seja, copiar os dados de um outro dataset em tempo de execução, não apenas os registros, mas a estrutura... alguém sabe como fazer isso? [As partes desta mensagem que não continham texto foram removidas] -- Evandro [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] clientdataset + firebird
ainda nao funcionou, to tentando pesquisa no google mas tudo o que achei foi exatamente o que voce falou Uberdam. 2008/8/12 berdam [EMAIL PROTECTED] no cds em cima da chave primaria, seleciona a opção pfkey no provider flags e no dsp como wherekeyonly felipe govoni escreveu: deu o seguinte erro: Unable to find record. No key specified 2008/8/12 berdam [EMAIL PROTECTED] berdamzinho%40yahoo.com.br mailto:berdamzinho%40yahoo.com.br berdamzinho%2540yahoo.com.br refreshrecord felipe govoni escreveu: bom dia estou começando a usar o firebird mas surgiu uma duvida: coloquei no afterpost do clientdataset: cdsItens.applyupdates cdsItens.refresh //para atualizar o campo autoincremento, pois sempre ele fica com valor zero mas sempre que faço isso ele volta para o primeiro registro da tabela, alguem sabe como posso resolver isso? -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricular.com.br/berdam http://www.curricular.com.br/berdam Acesse http://passandoveneno.blogspot.com http://passandoveneno.blogspot.com - -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricular.com.br/berdam Acesse http://passandoveneno.blogspot.com - -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] clientdataset + firebird
deleta a uery dsp e cds adiciona novamente e faz essas coisas. Enfrento problmas desses tipo as vezes Uberdam Cavaletti Formado em Tecnologia da Informação - Unoesc - Xxe Pós-graduado em desenvolvimento Java - Unoesc - Xxe http://www.curricular.com.br/berdam Visite http://passandoveneno.blogspot.com --- Em qua, 13/8/08, felipe govoni [EMAIL PROTECTED] escreveu: De: felipe govoni [EMAIL PROTECTED] Assunto: Re: [delphi-br] clientdataset + firebird Para: delphi-br@yahoogrupos.com.br Data: Quarta-feira, 13 de Agosto de 2008, 9:28 ainda nao funcionou, to tentando pesquisa no google mas tudo o que achei foi exatamente o que voce falou Uberdam. 2008/8/12 berdam berdamzinho@ yahoo.com. br no cds em cima da chave primaria, seleciona a opção pfkey no provider flags e no dsp como wherekeyonly felipe govoni escreveu: deu o seguinte erro: Unable to find record. No key specified 2008/8/12 berdam berdamzinho@ yahoo.com. br berdamzinho% 40yahoo.com. br mailto:berdamzinho %40yahoo. com.br berdamzinho% 2540yahoo. com.br refreshrecord felipe govoni escreveu: bom dia estou começando a usar o firebird mas surgiu uma duvida: coloquei no afterpost do clientdataset: cdsItens.applyupdat es cdsItens.refresh //para atualizar o campo autoincremento, pois sempre ele fica com valor zero mas sempre que faço isso ele volta para o primeiro registro da tabela, alguem sabe como posso resolver isso? -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - - - - - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricul ar.com.br/ berdam http://www.curricul ar.com.br/ berdam Acesse http://passandovene no.blogspot. com http://passandovene no.blogspot. com - - - - - -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - - - - - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricul ar.com.br/ berdam Acesse http://passandovene no.blogspot. com - - - - - -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] clientdataset + firebird
blz vo testa aqui e depois digo se funcionou. vlw 2008/8/13 Berdam [EMAIL PROTECTED] deleta a uery dsp e cds adiciona novamente e faz essas coisas. Enfrento problmas desses tipo as vezes -- Uberdam Cavaletti Formado em Tecnologia da Informação - Unoesc - Xxe Pós-graduado em desenvolvimento Java - Unoesc - Xxe http://www.curricular.com.br/berdam Visite http://passandoveneno.blogspot.com -- --- Em qua, 13/8/08, felipe govoni [EMAIL PROTECTED]govoni.felipe%40gmail.com escreveu: De: felipe govoni [EMAIL PROTECTED] govoni.felipe%40gmail.com Assunto: Re: [delphi-br] clientdataset + firebird Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Data: Quarta-feira, 13 de Agosto de 2008, 9:28 ainda nao funcionou, to tentando pesquisa no google mas tudo o que achei foi exatamente o que voce falou Uberdam. 2008/8/12 berdam berdamzinho@ yahoo.com. br no cds em cima da chave primaria, seleciona a opção pfkey no provider flags e no dsp como wherekeyonly felipe govoni escreveu: deu o seguinte erro: Unable to find record. No key specified 2008/8/12 berdam berdamzinho@ yahoo.com. br berdamzinho% 40yahoo.com. br mailto:berdamzinho %40yahoo. com.br berdamzinho% 2540yahoo. com.br refreshrecord felipe govoni escreveu: bom dia estou começando a usar o firebird mas surgiu uma duvida: coloquei no afterpost do clientdataset: cdsItens.applyupdat es cdsItens.refresh //para atualizar o campo autoincremento, pois sempre ele fica com valor zero mas sempre que faço isso ele volta para o primeiro registro da tabela, alguem sabe como posso resolver isso? -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - - - - - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricul ar.com.br/ berdam http://www.curricul ar.com.br/ berdam Acesse http://passandovene no.blogspot. com http://passandovene no.blogspot. com - - - - - -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - - - - - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricul ar.com.br/ berdam Acesse http://passandovene no.blogspot. com - - - - - -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses [As partes desta mensagem que não continham texto foram removidas] -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] clientdataset + firebird
bom dia estou começando a usar o firebird mas surgiu uma duvida: coloquei no afterpost do clientdataset: cdsItens.applyupdates cdsItens.refresh //para atualizar o campo autoincremento, pois sempre ele fica com valor zero mas sempre que faço isso ele volta para o primeiro registro da tabela, alguem sabe como posso resolver isso? -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] clientdataset + firebird
refreshrecord felipe govoni escreveu: bom dia estou começando a usar o firebird mas surgiu uma duvida: coloquei no afterpost do clientdataset: cdsItens.applyupdates cdsItens.refresh //para atualizar o campo autoincremento, pois sempre ele fica com valor zero mas sempre que faço isso ele volta para o primeiro registro da tabela, alguem sabe como posso resolver isso? -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricular.com.br/berdam Acesse http://passandoveneno.blogspot.com -
Re: [delphi-br] clientdataset + firebird
deu o seguinte erro: Unable to find record. No key specified 2008/8/12 berdam [EMAIL PROTECTED] refreshrecord felipe govoni escreveu: bom dia estou começando a usar o firebird mas surgiu uma duvida: coloquei no afterpost do clientdataset: cdsItens.applyupdates cdsItens.refresh //para atualizar o campo autoincremento, pois sempre ele fica com valor zero mas sempre que faço isso ele volta para o primeiro registro da tabela, alguem sabe como posso resolver isso? -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricular.com.br/berdam Acesse http://passandoveneno.blogspot.com - -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] clientdataset + firebird
no cds em cima da chave primaria, seleciona a opção pfkey no provider flags e no dsp como wherekeyonly felipe govoni escreveu: deu o seguinte erro: Unable to find record. No key specified 2008/8/12 berdam [EMAIL PROTECTED] mailto:berdamzinho%40yahoo.com.br refreshrecord felipe govoni escreveu: bom dia estou começando a usar o firebird mas surgiu uma duvida: coloquei no afterpost do clientdataset: cdsItens.applyupdates cdsItens.refresh //para atualizar o campo autoincremento, pois sempre ele fica com valor zero mas sempre que faço isso ele volta para o primeiro registro da tabela, alguem sabe como posso resolver isso? -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricular.com.br/berdam http://www.curricular.com.br/berdam Acesse http://passandoveneno.blogspot.com http://passandoveneno.blogspot.com - -- Felipe Govoni - Programador Fone 8472-8718 [As partes desta mensagem que não continham texto foram removidas] -- - Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduando em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricular.com.br/berdam Acesse http://passandoveneno.blogspot.com -
[delphi-br] ClientDataSet
Boa Tarde, pessoal estou tentando fazer uso do CommandText num ClientDataSet que está sómente LOCAL, salvei os dados com CDS1.SaveToFile('c:\usr\estoque', pfbinary) e quando abro um segundo CDS e fazendo CDS2.LoadFromFile('c:\usr\estoque') carrego os dados perfeitamente, mas agora preciso filtrar estes dados como SALDO = 0 por exemplo, estou tentando fazer uso do COMMANDTEXT e criar meu select mas não estou tento resultado, isto não é possível mesmo ?, tem outra maneira de fazer isto ? grato Stainle
RE: [delphi-br] ClientDataSet
Meu caro, vc está equivocado! O uso da propriedade CommandText sujeita o uso do ClientDataSet com um DataSetProvider, e este estar ligado a um componente de consulta SQL conectado a um banco de dados. Ou seja, não se pode emitir um SELECT para uma base local, quer seja ela em formato bínário ou em formato XML packet. Se vc precisa fazer filtros e seleções, prefira o uso da propriedade Filter, pois o ClientDataSet não possui, nele embutido, um interpretador do tipo 'SQL Engine' para interpretar uma instrução SELECT. Boa sorte. Sds. To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Tue, 5 Aug 2008 16:59:01 + Subject: [delphi-br] ClientDataSet Boa Tarde, pessoal estou tentando fazer uso do CommandText num ClientDataSet que está sómente LOCAL, salvei os dados com CDS1.SaveToFile('c:\usr\estoque', pfbinary) e quando abro um segundo CDS e fazendo CDS2.LoadFromFile('c:\usr\estoque') carrego os dados perfeitamente, mas agora preciso filtrar estes dados como SALDO = 0 por exemplo, estou tentando fazer uso do COMMANDTEXT e criar meu select mas não estou tento resultado, isto não é possível mesmo ?, tem outra maneira de fazer isto ? grato Stainle _ Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o Messenger! É GRÁTIS! http://www.msn.com.br/emoticonpack
RE: [delphi-br] ClientDataSet
valeu, foi o que imaginei. grato Stainle --- Em ter, 5/8/08, Rubem Nascimento da Rocha [EMAIL PROTECTED] escreveu: De: Rubem Nascimento da Rocha [EMAIL PROTECTED] Assunto: RE: [delphi-br] ClientDataSet Para: delphi-br@yahoogrupos.com.br Data: Terça-feira, 5 de Agosto de 2008, 14:08 Meu caro, vc está equivocado! O uso da propriedade CommandText sujeita o uso do ClientDataSet com um DataSetProvider, e este estar ligado a um componente de consulta SQL conectado a um banco de dados. Ou seja, não se pode emitir um SELECT para uma base local, quer seja ela em formato bínário ou em formato XML packet. Se vc precisa fazer filtros e seleções, prefira o uso da propriedade Filter, pois o ClientDataSet não possui, nele embutido, um interpretador do tipo 'SQL Engine' para interpretar uma instrução SELECT. Boa sorte. Sds. _ _ __ To: [EMAIL PROTECTED] os.com.br From: stainle2003@ yahoo.com. br Date: Tue, 5 Aug 2008 16:59:01 + Subject: [delphi-br] ClientDataSet Boa Tarde, pessoal estou tentando fazer uso do CommandText num ClientDataSet que está sómente LOCAL, salvei os dados com CDS1.SaveToFile( 'c:\usr\estoque' , pfbinary) e quando abro um segundo CDS e fazendo CDS2.LoadFromFile( 'c:\usr\estoque' ) carrego os dados perfeitamente, mas agora preciso filtrar estes dados como SALDO = 0 por exemplo, estou tentando fazer uso do COMMANDTEXT e criar meu select mas não estou tento resultado, isto não é possível mesmo ?, tem outra maneira de fazer isto ? grato Stainle _ _ _ _ _ _ Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o Messenger! É GRÁTIS! http://www.msn. com.br/emoticonp ack Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] ClientDataSet
Ola Senhores, Estou desenvolvendo a NFE, e após abrir o arquivo XML pelo CDS, foram criados campos do Tipo DataSet. Queria saber dos senhores como faço para trabalhar com esse campo? Como faço para acessar e preencher esses campos DataSet? e para melhorar dentro de um campo tipo DataSet também contém campos do mesmo tipo. se alguem poder mu ajudar ficarei grato [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] ClientDataSet
Vc pode abrir um campo do tipo TDataSetField usando um outro ClientDataSet. Para atribuir para a propriedade DataSetField o campo TDataSetField do outro ClientDataSet. Informe-se mais no help do Delphi. Sds. CC: [EMAIL PROTECTED]; delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Tue, 15 Jul 2008 13:49:16 -0300 Subject: [delphi-br] ClientDataSet Ola Senhores, Estou desenvolvendo a NFE, e após abrir o arquivo XML pelo CDS, foram criados campos do Tipo DataSet. Queria saber dos senhores como faço para trabalhar com esse campo? Como faço para acessar e preencher esses campos DataSet? e para melhorar dentro de um campo tipo DataSet também contém campos do mesmo tipo. se alguem poder mu ajudar ficarei grato _ Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o Messenger! É GRÁTIS! http://www.msn.com.br/emoticonpack
Re: [SPAM][delphi-br] ClientDataSet
Bom dia Stainle Para fazer alterações em registro deve-se usar : ClientDataSet.Edit e quando vc for gravar/excluir/Cancelar o registro use nos Eventos do ClientDataSet ... AfterCancel - ClientDataSet.CancelUpdates() ; AfterDelete - ClientDataSet.ApplyUpdates(0) ; AfterPost - ClientDataSet.ApplyUpdates(0) ; Luciano Angelini Prefeitura de Lupionópolis-Pr stainle2003 escreveu: Usando a combinação Query(bde) DataSetProvider e ClientDataSet eu estou conseguindo incluir; usando após o POST o CDS.ApplyUpdate(0); quando em inclusão tudo bem, porém quando vou alterar estes dados ao aplicar o POST me é informado que o CDS não está em Insert ou Edit mode, estou pensando em usar sómente o QUERY com algumas mudanças, pois não estou conseguindo fazer EDIÇÃO no REGISTRO. alguém tem uma solução ?? grato Stainle
[delphi-br] ClientDataSet
Usando a combinação Query(bde) DataSetProvider e ClientDataSet eu estou conseguindo incluir; usando após o POST o CDS.ApplyUpdate(0); quando em inclusão tudo bem, porém quando vou alterar estes dados ao aplicar o POST me é informado que o CDS não está em Insert ou Edit mode, estou pensando em usar sómente o QUERY com algumas mudanças, pois não estou conseguindo fazer EDIÇÃO no REGISTRO. alguém tem uma solução ?? grato Stainle
[delphi-br] clientdataset feito por mim..
Eu criei um componente herdado do tclientdataset, coloquei alguns funcionalidades nele, tipo uma propriedade autoapply que se tiver setada como true após um post ele já envia um applyupdates automaticamente. Esse meu componente vem funcionando perfeitamente mas a alguns dias um cliente meu tem reclamado pois ele edita os preços e demais coisas da tabela de produto, salva (da um post) e quando volta a tela ou vai ver nenhuma mudança que ele fez o sistema aplicou no banco, e com se estivese so local (no delta do clientdataset), o sistema ta rodando la a mais de um ano e só ta dando isso agora. Alguém sabe o que pode ta causando isso e como corrigir? O mesmo programa toda em vários outros clientes e so la esta dando essa bronca.. o banco de dados é firebird 1.5 T+ --- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. --- [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] clientdataset feito por mim..
Bem, como vc alterou o comportamento padrão do ClientDataSet, fica difícil saber o que está errado... Somente vendo o código fonte do componente... -- Marcos Douglas 2008/4/15 Rafael Jorge [EMAIL PROTECTED]: Eu criei um componente herdado do tclientdataset, coloquei alguns funcionalidades nele, tipo uma propriedade autoapply que se tiver setada como true após um post ele já envia um applyupdates automaticamente. Esse meu componente vem funcionando perfeitamente mas a alguns dias um cliente meu tem reclamado pois ele edita os preços e demais coisas da tabela de produto, salva (da um post) e quando volta a tela ou vai ver nenhuma mudança que ele fez o sistema aplicou no banco, e com se estivese so local (no delta do clientdataset), o sistema ta rodando la a mais de um ano e só ta dando isso agora. Alguém sabe o que pode ta causando isso e como corrigir? O mesmo programa toda em vários outros clientes e so la esta dando essa bronca.. o banco de dados é firebird 1.5 T+ --- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. --- [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM -- Marcos Douglas
Re: [delphi-br] clientdataset feito por mim..
so fiz o que foi dito.. colocoque um applyupdates no afterpost do componente so isso. coloquei tambem outras coisas que nao vem ao caso pois sao especificas das minhas necessidades e nao afetam no ocorrido pois nao tem vinculo nenhum com post nem apply. sao rotinas pra validae se foi passado usuario e empresa, essas coisas. o sistema vem funcionando a um ano nesse cliente é a 3 anos em outros estabelecimentos. t+ Em 15/04/08, Marcos Douglas [EMAIL PROTECTED] escreveu: Bem, como vc alterou o comportamento padrão do ClientDataSet, fica difícil saber o que está errado... Somente vendo o código fonte do componente... -- Marcos Douglas 2008/4/15 Rafael Jorge [EMAIL PROTECTED] rafael.jorge%40gmail.com : Eu criei um componente herdado do tclientdataset, coloquei alguns funcionalidades nele, tipo uma propriedade autoapply que se tiver setada como true após um post ele já envia um applyupdates automaticamente. Esse meu componente vem funcionando perfeitamente mas a alguns dias um cliente meu tem reclamado pois ele edita os preços e demais coisas da tabela de produto, salva (da um post) e quando volta a tela ou vai ver nenhuma mudança que ele fez o sistema aplicou no banco, e com se estivese so local (no delta do clientdataset), o sistema ta rodando la a mais de um ano e só ta dando isso agora. Alguém sabe o que pode ta causando isso e como corrigir? O mesmo programa toda em vários outros clientes e so la esta dando essa bronca.. o banco de dados é firebird 1.5 T+ -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM -- Marcos Douglas -- --- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. --- [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] clientdataset feito por mim..
Voce usa o DataSetProvider? Se usa, voce setou algum evento no OnUpdateError? Digo isso porque às vezes o banco retorna um erro de uma trigger ou algum exception, e o cds nao consegue tratar e nem dá msg nenhuma para o cliente. O que pode estar acontecendo é o banco estar recusando os updates, insert e deletes e isso nao aparece na tela, e ai fica parecendo que gravou. Acontece isso às vezes comigo no MSSQL, por isso uso o evento onupdateerror no DSP. Grato, Francisco Rodrigues. Rafael Jorge [EMAIL PROTECTED] escreveu: so fiz o que foi dito.. colocoque um applyupdates no afterpost do componente so isso. coloquei tambem outras coisas que nao vem ao caso pois sao especificas das minhas necessidades e nao afetam no ocorrido pois nao tem vinculo nenhum com post nem apply. sao rotinas pra validae se foi passado usuario e empresa, essas coisas. o sistema vem funcionando a um ano nesse cliente é a 3 anos em outros estabelecimentos. t+ Em 15/04/08, Marcos Douglas [EMAIL PROTECTED] escreveu: Bem, como vc alterou o comportamento padrão do ClientDataSet, fica difícil saber o que está errado... Somente vendo o código fonte do componente... -- Marcos Douglas 2008/4/15 Rafael Jorge [EMAIL PROTECTED] rafael.jorge%40gmail.com : Eu criei um componente herdado do tclientdataset, coloquei alguns funcionalidades nele, tipo uma propriedade autoapply que se tiver setada como true após um post ele já envia um applyupdates automaticamente. Esse meu componente vem funcionando perfeitamente mas a alguns dias um cliente meu tem reclamado pois ele edita os preços e demais coisas da tabela de produto, salva (da um post) e quando volta a tela ou vai ver nenhuma mudança que ele fez o sistema aplicou no banco, e com se estivese so local (no delta do clientdataset), o sistema ta rodando la a mais de um ano e só ta dando isso agora. Alguém sabe o que pode ta causando isso e como corrigir? O mesmo programa toda em vários outros clientes e so la esta dando essa bronca.. o banco de dados é firebird 1.5 T+ -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM -- Marcos Douglas -- -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] between -00-00 and -99-99 - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] ClientDataSet e Transações
Boa tarde, colegas! Estou com uma dúvida aqui... Quando trabalho com TClientDataSet, preciso controlar explicitamente as transações ou o TClientDataSet faz isso por mim? Atte, Ricardo. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] ClientDataSet e Transações
O metodo applyupdates é uma transação monitorada, o parâmetro deste método é o numro de erros que podem ocorrer. Por isso se colocar zero, este não permitira erros.. Abs BL From: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Ricardo César Cardoso Sent: sexta-feira, 11 de abril de 2008 13:59 To: delphi-br@yahoogrupos.com.br Subject: [delphi-br] ClientDataSet e Transações Boa tarde, colegas! Estou com uma dúvida aqui... Quando trabalho com TClientDataSet, preciso controlar explicitamente as transações ou o TClientDataSet faz isso por mim? Atte, Ricardo. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet e Transações
Pelo que eu entendi de sua pergunta, sim. O ClientDataSet faz o controle de transacoes automaticamente atraves do metodo ApplyUpdates.(Na verdade quem faz é o SQLConnection atraves dos Metodos StartTransaction,. Commit e Rollback). Quero dizer, qndo vc chama este metodo ele pega as alteracoes que tem no cache e grava no banco de dados. Mas caso vc queria controlar transacoes como em uma transferencia bancaria vc deverá fazer isto atraves dos metodos mencionados acima. Com o SQLConnection, mas continua utilizando o ApplyUpdates. tendeu ? Em 11/04/08, Ricardo César Cardoso [EMAIL PROTECTED] escreveu: Boa tarde, colegas! Estou com uma dúvida aqui... Quando trabalho com TClientDataSet, preciso controlar explicitamente as transações ou o TClientDataSet faz isso por mim? Atte, Ricardo. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] -- Cláudio Marconi Delphi/DirectShow Developer 55 61 8406-6451 [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] ClientDataSet e Transações
Pois é, Bruno. Tenho isso em mente, mas alguém me questionou que estou equivocado e o melhor é sempre ter uma transação explícita mesmo trabalhando com ClientDataSet, mas não sei... não me convenceu. Agora, se puder me confirme: mesmo que eu esteja usando mestre/detalhes, não preciso ter uma transação controlando uma atualização não é? Ilustro com o seguinte exemplo: O usuário lança uma nota de entrada de estoque e clica em confirmar. rodo o CDS de itens aumentando a posição de estoque. dou applyUpdates no CDS da Nota. dou AppyUpdates no CDS q alterou o estoque. dou AppyUpdates no CDS dos itens. ai no CDS dos Itens (eram 20 itens). deu erro em um. mais necessáriamente o item 14. Bastaria checar o número de erros durante o ApplyUpdates para emitir uma mensagm, não é? E dependendo de como quiser tratar, ir aplicando CancelUpdates para evitar o desastre, não? Atte, Ricardo. Bruno Lichot [EMAIL PROTECTED] escreveu: O metodo applyupdates é uma transação monitorada, o parâmetro deste método é o numro de erros que podem ocorrer. Por isso se colocar zero, este não permitira erros.. Abs BL - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] ClientDataSet e Transações
O ClientDataSet, via TDataSetProvider, já faz esse controle de forma transparente, mesmo se vc ClientDataSets aninhados representando uma relação mestre-detalhe. Sds. To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Fri, 11 Apr 2008 13:58:51 -0300 Subject: [delphi-br] ClientDataSet e Transações Boa tarde, colegas! Estou com uma dúvida aqui... Quando trabalho com TClientDataSet, preciso controlar explicitamente as transações ou o TClientDataSet faz isso por mim? Atte, Ricardo. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] _ Cansado de espaço para só 50 fotos? Conheça o Spaces, o site de relacionamentos com até 6,000 fotos! http://www.amigosdomessenger.com.br
Re:[delphi-br] ClientDataSet e Transa ções
Não, quem vai fazer isto pra você é o Datasource Provider. []s Walter Alves Chagas Junior Belo Horizonte - MG - Brazil [EMAIL PROTECTED] http://www.geocities.com/SiliconValley/Bay/1058 http://delphitocorporerm.blogspot.com/ MSN: [EMAIL PROTECTED] SKYPE: WalterChagasJr -- Início da mensagem original --- De: delphi-br@yahoogrupos.com.br Para: delphi-br@yahoogrupos.com.br Cc: Data: Fri, 11 Apr 2008 13:58:51 -0300 (ART) Assunto: [delphi-br] ClientDataSet e Transações Boa tarde, colegas! Estou com uma dúvida aqui... Quando trabalho com TClientDataSet, preciso controlar explicitamente as transações ou o TClientDataSet faz isso por mim? Atte, Ricardo. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet e Transações
Precisa controlar. Como está usando o componente? DBExpress? Se for DBExpress, receita de bolo, precisa fazer o seguinte: procedure TForm1.. var Trans : TTransactionDesc; begin Trans.TransationID := 1; Trans.IsolationLevel := xilREADCOMMITTED; try SqlConnection.StartTransation(Trans): //comandos de gravação SqlConnection.Commit(Trans): except SqlConnection.RollBack(Trans): end; end; Dá uma olhada nesse link, tem uma discussão enorme sobre isso que dá pra aprender e entender bastante coisa. http://forum.clubedelphi.net/viewtopic.php?t=75031postdays=0postorder=ascstart=30sid=002f1248ced44cd1c792b6f25d78c5c9 Abs Adriano Santos - Editor Técnico Revista ClubeDelphi www.delphitodelphi.blogspot.com www.devmedia.com.br www.devmedia.com.br/clubedelphi/pagina.asp Ricardo César Cardoso respondeu: Boa tarde, colegas! Estou com uma dúvida aqui... Quando trabalho com TClientDataSet, preciso controlar explicitamente as transações ou o TClientDataSet faz isso por mim? Atte, Ricardo. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] No virus found in this incoming message. Checked by AVG. Version: 7.5.519 / Virus Database: 269.22.12/1373 - Release Date: 11/4/2008 09:17
Re: [delphi-br] ClientDataSet e Transações
Claudio, Só pegando uma carona no topico. Esses dias vi uma video do Guinter e num exemplo que mostrava na tela tinha um botão de post e outro ApplyUpdate. Ele alterava o dado no grid, clicava em Post e depois em ApplyUpdate. Fiquei boiando porque achava que o Post já fazia esse commit no banco. []Os Joel Pelo que eu entendi de sua pergunta, sim. O ClientDataSet faz o controle de transacoes automaticamente atraves do metodo ApplyUpdates.(Na verdade quem faz é o SQLConnection atraves dos Metodos StartTransaction,. Commit e Rollback). Quero dizer, qndo vc chama este metodo ele pega as alteracoes que tem no cache e grava no banco de dados. Mas caso vc queria controlar transacoes como em uma transferencia bancaria vc deverá fazer isto atraves dos metodos mencionados acima. Com o SQLConnection, mas continua utilizando o ApplyUpdates. tendeu ? Em 11/04/08, Ricardo César Cardoso [EMAIL PROTECTED] escreveu: Boa tarde, colegas! Estou com uma dúvida aqui... Quando trabalho com TClientDataSet, preciso controlar explicitamente as transações ou o TClientDataSet faz isso por mim? Atte, Ricardo. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet e Transações
Nope, Joel. Post só manda o registro para o cache do TClientDataSet. Quem acaba fazendo o envio pro BD é o ApplyUpdates. Gostaria de agradecer todos os colegas ( Rubem Nascimento, Bruno Lichot, Walter Chagas e Adriano Santos ) por confirmarem o ponto de vista que não necessito explicitar o uso de transações e esclarecer qual componente é responsável por facilitar a vida escondendo as transações. Valeu mesmo! Atte, Ricardo. Joel Alexandre [EMAIL PROTECTED] escreveu: Claudio, Só pegando uma carona no topico. Esses dias vi uma video do Guinter e num exemplo que mostrava na tela tinha um botão de post e outro ApplyUpdate. Ele alterava o dado no grid, clicava em Post e depois em ApplyUpdate. Fiquei boiando porque achava que o Post já fazia esse commit no banco. []Os Joel - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] ClientDataSet BMP x JPG
Pessoal Estou fazendo a captura de imagem dos clientes (com webcam) mas o ClientDataSet não aceita que eu coloque no banco uma imagem no formato JPG, apenas BMP... como estou fazendo: 1. Capturo a foto da WebCam, esta é salva como BMP 2. Converto para JPG a foto pois fica muito menor então fico com 2 imagens (Imagem.bmp e Imagem.jpg) 3. Carrego o campo com a imagem JPG mas não funciona, apenas como BMP funciona. [ FUNCIONA ] edCLI_IMG_FOTO.Bitmap.LoadFromFile('Imagem.bmp'); [ NAO FUNCIONA ] edCLI_IMG_FOTO.Bitmap.LoadFromFile('Imagem.jpg'); [ NAO FUNCIONA ] edCLI_IMG_FOTO.LoadFromFile('Imagem.jpg'); ** PORQUE NÃO FUNCIONA JPG ? Utilizo o Firebird 1.5 o campo CLI_IMG_FOTO é do tipo BLOB 0 att. Juliano Silva [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet BMP x JPG
Bom dia Juliano! Dá uma olhadinha nessas duas dicas, pode ser que elas te ajudem um pouco. [ http://www.swissdelphicenter.ch/torry/showcode.php?id=2012 ] [ http://www.swissdelphicenter.ch/torry/showcode.php?id=1883 ] Atte, Ricardo. Juliano Silva - Yahoo [EMAIL PROTECTED] escreveu: Pessoal Estou fazendo a captura de imagem dos clientes (com webcam) mas o ClientDataSet não aceita que eu coloque no banco uma imagem no formato JPG, apenas BMP... como estou fazendo: 1. Capturo a foto da WebCam, esta é salva como BMP 2. Converto para JPG a foto pois fica muito menor então fico com 2 imagens (Imagem.bmp e Imagem.jpg) 3. Carrego o campo com a imagem JPG mas não funciona, apenas como BMP funciona. [ FUNCIONA ] edCLI_IMG_FOTO.Bitmap.LoadFromFile('Imagem.bmp'); [ NAO FUNCIONA ] edCLI_IMG_FOTO.Bitmap.LoadFromFile('Imagem.jpg'); [ NAO FUNCIONA ] edCLI_IMG_FOTO.LoadFromFile('Imagem.jpg'); ** PORQUE NÃO FUNCIONA JPG ? Utilizo o Firebird 1.5 o campo CLI_IMG_FOTO é do tipo BLOB 0 att. Juliano Silva [As partes desta mensagem que não continham texto foram removidas] - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
Res: [delphi-br] ClientDataSet BMP x JPG
Para trabalhar com Jpg no Delphi, vc deve declarar a unit JPEG no uses da unit. Procure sobre essa unit no help do Delphi que vc vai achar muito informaçao útil. Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]