Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qua Jan 25, 2012 8:55 pm Assunto: nao encontra dados com ClientDataSet[Resolvido] |
|
|
Pessoal tenho a seguinte situação
meu ClientDataSet não ta mais funcionando não traz os dados
meu ClientDataSet está ligado ao meu DataSetProvider e meu DataSetProvider ligado ao meu DataSet buscando dados de uma procedure do banco firebid
veja o procedimento no meu clietDataset
with cdExportar do
begin
close;
FetchParams;
CommandText:='';
CommandText:='select * from EXPORTACAO_1(:iCodigoUsuario)';
Params[0].AsInteger:= iCodigoUsuario;
Open;
end;
e meu DataSetProvider já está com poAllwoComandtex como True
e quando eu chamo minha procedure em DataSet somente tudo dar certo mais eu preciso que seja em ClientDataSet
onde estou errando?
eu descobri que o problema é por causa do parametro quando refaço a procedure sem paramentro para teste da certo, mais preciso desse parametro
Editado pela última vez por nildglan em Qui Jan 26, 2012 4:24 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qua Jan 25, 2012 9:49 pm Assunto: |
|
|
já fiz assim e não deu certo
with cdExportar do
begin
close;
CommandText:='select * from EXPORTACAO_1(:iCodigoUsuario)';
FetchParams;
Params.ParamByName('iCodigoUsuario').AsInteger := iCodigoUsuario;
Open;
end; |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jan 25, 2012 10:59 pm Assunto: |
|
|
Você já tentou executar este select através de uma ferramenta como o IBExpert ou similar, preenchendo no parâmetro o mesmo valor enviado pelo seu sistema?
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imobiliarias-em-guarulhos
Editado pela última vez por imex em Qui Jan 03, 2013 8:29 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
felipecaputo Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010 Mensagens: 1719 Localização: Florianópolis / SC
|
Enviada: Qui Jan 26, 2012 9:37 am Assunto: |
|
|
Se este comando sql já está na query, você não precisa preencher o command text. Use apenas o FetchParams e depois preencha o parametro e dê o open.  _________________ if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qui Jan 26, 2012 9:46 am Assunto: |
|
|
imex ja fiz sim e da tudo certo,
felipecaputo minha select está no DataSet mais o DataProvider allowcomandtext está true ou seja possibilitando eu passa a select no ClientDataSet |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Jan 26, 2012 9:54 am Assunto: |
|
|
Tire o * e coloque os campos em vez disto, aliás nunca uso desta forma, costuma dar problema.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
felipecaputo Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010 Mensagens: 1719 Localização: Florianópolis / SC
|
Enviada: Qui Jan 26, 2012 10:07 am Assunto: |
|
|
Bom dia amigo, se já está no dataset, não precisa ser passada pelo comand text, basta o fetch params e a atualização do parametro. _________________ if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qui Jan 26, 2012 10:39 am Assunto: |
|
|
johnny-walker é uma procedure e eu preciso de todos os campos
felipecaputo fiz assim então
with cdExportar do
begin
FetchParams;
Params[0].AsInteger := iCodigoUsuario;
Open;
end;
e não deu certo
resaltando pessoal que quando não uso o ClientDataSet uso somente o DataSet da certo |
|
Voltar ao Topo |
|
 |
felipecaputo Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010 Mensagens: 1719 Localização: Florianópolis / SC
|
Enviada: Qui Jan 26, 2012 10:43 am Assunto: |
|
|
confira o seguinte:
1 - Coloque um breakpoint no fecthParams
2 - Assim que parar, aperte F8 e depois Ctrl + F7 irá aparecer uma janelinha
3 - Digite na janelinha cdExportar.Params.Count e verifique se é somente 1
4 - Pressione F8 até o Open;
5 - Apos o open verifique o record count
ps.: confira também:
- Se a query está correta no DataSet
- A ligação dos compoentes
- Verifique se o datasource está apontando para o clientdataset _________________ if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein |
|
Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 26, 2012 11:04 am Assunto: |
|
|
nildglan escreveu: | johnny-walker é uma procedure e eu preciso de todos os campos
felipecaputo fiz assim então
with cdExportar do
begin
CLOSE
FetchParams;
Params[0].AsInteger := iCodigoUsuario;
Open;
end;
e não deu certo
resaltando pessoal que quando não uso o ClientDataSet uso somente o DataSet da certo |
Mas a instrução esta no DataSet ?????????????????? _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qui Jan 26, 2012 12:02 pm Assunto: |
|
|
felipecaputo eu fiz o que vc pediu botei um breakpoint e presionei F8 e quando chegou em Params[0].AsInteger := iCodigoUsuario; presionei Ctrl9+F7 ai apareceu uma janelinha com título Evaluate ai eu coloquei cdExportar.Params.Count e presionei no botão evaluate e apareceu o valor Zero (0) ai pressionei até o open e deu um erro
'List index out of bound(0)' ou seja como se não existe esse parametro
marcosalles a instrução está sim no dataSet |
|
Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 26, 2012 12:18 pm Assunto: |
|
|
Citação: | marcosalles a instrução está sim no dataSet |
Mas voce definiu os parametros neste DataSet , o Tipo _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qui Jan 26, 2012 12:20 pm Assunto: |
|
|
pessoal tem um detalhe interessante vou passar minha procedure para vcs verem
CREATE PROCEDURE EXPORTACAO_1 (
icodigousuario integer)
returns (
codusuario_autorizado integer,
codigo_usuario integer,
nome_sindicato varchar(120),
formatar_cnpj varchar(20),
quant_socio_ativos integer,
quant_socio_inativos integer,
quant_socio_ativos_inativos integer,
quant_socio_mas integer,
quant_socio_fem integer,
quant_socio_aposentado integer,
quant_socio_nao_aposentado integer,
quant_socio_apos_nao_inf integer,
quant_socio_individualmente integer,
quant_socio_reg_eco_familiar integer,
quant_socio_assal_rural integer,
quant_socio_tit_terra integer,
quant_socio_nao_tit_terra integer,
quant_socio_tit_terra_nao_inf integer,
quant_socio_associacao integer,
quant_socio_debito_ativo integer,
quant_socio_quitado_ativo integer)
as
declare variable cnpj_sindicato varchar(20);
begin
SELECT CODUSUARIO FROM usuario_auto
INTO:CODUSUARIO_AUTORIZADO;
SELECT CODIGO,NOME,CNPJ FROM USUARIO where codigo =:iCodigoUsuario
INTO:CODIGO_USUARIO,NOME_SINDICATO,CNPJ_SINDICATO;
select NOVOCNPJ from ccnpj(:CNPJ_SINDICATO)
into: Formatar_CNPJ;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND STATUS ='A')
INTO: QUANT_SOCIO_ATIVOS;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND STATUS ='I')
INTO: QUANT_SOCIO_INATIVOS;
if (:QUANT_SOCIO_ATIVOS IS NULL) then
QUANT_SOCIO_ATIVOS=0;
if (:QUANT_SOCIO_INATIVOS IS NULL) then
QUANT_SOCIO_INATIVOS=0;
QUANT_SOCIO_ATIVOS_INATIVOS = QUANT_SOCIO_ATIVOS +QUANT_SOCIO_INATIVOS;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND SEXO ='M')
INTO: QUANT_SOCIO_MAS;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND SEXO ='F')
INTO: QUANT_SOCIO_FEM;
if (:QUANT_SOCIO_MAS IS NULL) then
QUANT_SOCIO_MAS=0;
if (:QUANT_SOCIO_FEM IS NULL) then
QUANT_SOCIO_FEM=0;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND APOSENTADO ='S')
INTO: QUANT_SOCIO_APOSENTADO;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND APOSENTADO ='N')
INTO: QUANT_SOCIO_NAO_APOSENTADO;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND APOSENTADO ='I')
INTO: QUANT_SOCIO_APOS_NAO_INF;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND REGIME_TRABALHARDOR ='I')
INTO: QUANT_SOCIO_INDIVIDUALMENTE;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND REGIME_TRABALHARDOR ='E')
INTO: QUANT_SOCIO_REG_ECO_FAMILIAR;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND REGIME_TRABALHARDOR ='A')
INTO: QUANT_SOCIO_ASSAL_RURAL;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND TITULAR_TERRA ='S')
INTO: QUANT_SOCIO_TIT_TERRA;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND TITULAR_TERRA ='N')
INTO: QUANT_SOCIO_NAO_TIT_TERRA;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND TITULAR_TERRA ='I')
INTO: QUANT_SOCIO_TIT_TERRA_NAO_INF;
SELECT count(*) FROM SOCIOS WHERE (CODIGO_USUARIO = :CODIGO_USUARIO
AND CODIGO_ASSOCIACAO > 0)
INTO: quant_socio_associacao;
SELECT count(*) FROM QUANT_SOCIO_DEBITOS (:codigo_usuario)
where ( Quantidade_Debito >0 )
intO: quant_socio_Debito_ativo;
quant_socio_Quitado_ativo =quant_socio_ativos -quant_socio_Debito_ativo ;
suspend;
end
o interessante é que o valor do campo codusuario_autorizado que não depende de parametro no clientDataset traz correto no grid e o restante que depende traz o valor zero(0) |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qui Jan 26, 2012 12:22 pm Assunto: |
|
|
marcosalles mais onde eu faço isso no dataset? eu tinha projeto que fiz usando dbExpress e funcionava perfeitamente |
|
Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 26, 2012 1:51 pm Assunto: |
|
|
nildglan escreveu: | marcosalles mais onde eu faço isso no dataset? eu tinha projeto que fiz usando dbExpress e funcionava perfeitamente |
Uma alternativa , acredito ser mais fácil , depois pode ate voltar com a sua
é adicionar um TSQLStoredProc
Liga-lo ao SqlConnection .. Na propriedade StoredProcName selecione
a procedure que voce quer executar
depois é so exceutar
Código: | with cdExportar do
begin
CLOSE
FetchParams;
Params[0].AsInteger := iCodigoUsuario;
Open;
end; |
Veja nil que na propriedade PARAMS do TSQLStoredProc ja é definida
automaticamente os Parâmetros necessários o Tipo O Nome etcc
È so olhar no OBjecto Inspector ****
São esses parametros que o ClientDAtaSet é configurado quando
se executa o método FetchParams;
veja um pequeno exemplo com o Banco employye do Firebird
Código: | procedure TForm1.Button2Click(Sender: TObject);
begin
SQLStoredProc1.StoredProcName:='ADD_EMP_PROJ';
showmessage(inttostr(SQLStoredProc1.Params.Count));
SQLStoredProc1.StoredProcName:='DELETE_EMPLOYEE';
showmessage(inttostr(SQLStoredProc1.Params.Count));
end; |
_________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
Voltar ao Topo |
|
 |
|