Vivendo&Aprendendo Postado Setembro 19, 2006 Denunciar Share Postado Setembro 19, 2006 Preciso diferenciar dois registros com o mesmo código e mostar um deles mas está dando erro na minha consulta. Onde esta errado? DmDados.ContasReceber.Close; DmDados.ContasReceber.SQL.Clear; DmDados.ContasReceber.SQL.Add('Select Distinct(ContasReceber.CodSaidas), ContasReceber.Codigo,'); DmDados.ContasReceber.SQL.Add('ContasReceber.DataCad, ContasReceber.Cliente, ContasReceber.MeuCodigo,'); DmDados.ContasReceber.SQL.Add('ContasReceber.Cnpj, ContasReceber.Ie, ContasReceber.Cpf, ContasReceber.Rg,'); DmDados.ContasReceber.SQL.Add('ContasReceber.Orgao, ContasReceber.Endereco, ContasReceber.Numero,'); DmDados.ContasReceber.SQL.Add('ContasReceber.Bairro, ContasReceber.FormaPgto, ContasReceber.TipoPgto,'); DmDados.ContasReceber.SQL.Add('ContasReceber.DataVencimento, ContasReceber.Parcela, ContasReceber.Valor,'); DmDados.ContasReceber.SQL.Add('ContasReceber.Desconto, ContasReceber.ValorRecebido, ContasReceber.Troco, ContasReceber.ValorTotal, ContasReceber.Situacao, ContasReceber.Promissoria, ContasReceber.Descricao'); DmDados.ContasReceber.SQL.Add('Where ContasReceber.CodSaidas = '+IntToStr(Cod)); DmDados.ContasReceber.Open; Alexandre Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 19, 2006 Denunciar Share Postado Setembro 19, 2006 Vivendo&Aprendendo, está faltando a cláusula FROM.A título de sugestão, seria mais conveniente você fazer uso do WITH <DM> DO e utilizar ALIAS no SQL, fica mais claro de ler o código:with DmDados do begin ContasReceber.SQL.Add('Select Distinct(C.CodSaidas), C.Codigo,'); ContasReceber.SQL.Add('C.DataCad, C.Cliente, C.MeuCodigo,'); ContasReceber.SQL.Add('C.Cnpj, C.Ie, C.Cpf, C.Rg,'); ContasReceber.SQL.Add('C.Orgao, C.Endereco, C.Numero,'); ContasReceber.SQL.Add('C.Bairro, C.FormaPgto, C.TipoPgto,'); ContasReceber.SQL.Add('C.DataVencimento, C.Parcela, C.Valor,'); ContasReceber.SQL.Add('C.Desconto, C.ValorRecebido, C.Troco, C.ValorTotal, C.Situacao, C.Promissoria, C.Descricao'); ContasReceber.SQL.Add('FROM ContasReceber C'); *** <==== AQUI ContasReceber.SQL.Add('Where C.CodSaidas = '+IntToStr(Cod)); ContasReceber.Open; end; ...No seu caso, inclusive, que tem apenas uma tabela, não seria necessário o uso do alias. Apenas o nome dos campos da tabela definida na cláusula FROM.[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Setembro 19, 2006 Denunciar Share Postado Setembro 19, 2006 (editado) Ola Alexandre,1º - está faltando a clausula FROM NomeDaTabela (From ContasReceber) antes da clausula WHERE;2º - No caso de select com 1 (uma) tabela, não necessita informar o nome da tabela antes dos campos (ContasReceber.CodSaidas) ;----Vê se assim resolve o seu caso: with DmDados.ContasReceber do begin Close; SQL.Clear; SQL.Add('Select Distinct CodSaidas, Codigo, DataCad, Cliente, MeuCodigo,'); SQL.Add('Cnpj, Ie, Cpf, Rg,Orgao, Endereco, Numero,Bairro, FormaPgto, TipoPgto,'); SQL.Add('DataVencimento, Parcela, Valor,Desconto, ValorRecebido, Troco, ValorTotal,'); SQL.Add('Situacao, Promissoria, Descricao'); SQL.Add('From ContasReceber Where CodSaidas = '+''''+IntToStr(Cod)+''''+''); Open; end;Abs. Progr'amador.----------------------Editado-------------------------------------Puts!, foi mal Micheus, :huh: não vi seu post!você postou enquando eu tava digitando :D Editado Setembro 19, 2006 por Progr'amador Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 19, 2006 Denunciar Share Postado Setembro 19, 2006 É, não reparei se você já estava respondendo também. Foi mal. :rolleyes: Pelo menos a resposta foi basicamente a mesma. :D []s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Setembro 19, 2006 Autor Denunciar Share Postado Setembro 19, 2006 Olá Programador e Micheus em questão da clausula From eu só não coloquei aqui no Forum, e usei o que vocês me passaram mas continua do mesmo jeito, ou seja, se eu tenho dois registros com o mesmo código ele esta abrindo os dois no lugar de abrir apenas um, parece que ele não usa o distinct.O que pode ser amigos?Alexandre Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 19, 2006 Denunciar Share Postado Setembro 19, 2006 A questão é que deve haver um campo (coluna) na sua consulta com valor diferente.O distinct vai, digamos, "agrupar" o resultado retornando apenas a 1ª ocorrência de dos valores repetidos (avaliando todas as colunas). Assim, se houver uma coluna diferente numa outra linha do resultado, esta será retornada já que é diferente da anterior.Se eu não estou enganado, talvez você tenha que modificar sua abordagem.Dá uma olhada neste link na parte que fala do DISTINCT[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Setembro 19, 2006 Autor Denunciar Share Postado Setembro 19, 2006 Valeu Micheus e ProgramadorRealmente tinha uma outra coluna com valor diferente.Ficou da seguinte maneira agora e funcionou: with ADOVia do begin Close; SQL.Clear; SQL.Add('Select Distinct CodSaidas, Codigo, DataCad, Cliente, MeuCodigo,'); SQL.Add('Cnpj, Ie, Cpf, Rg,Orgao, Endereco, Numero,Bairro, FormaPgto, TipoPgto,'); SQL.Add('DataVencimento, Parcela, Valor,Desconto, ValorRecebido, Troco, ValorTotal,'); SQL.Add('Situacao, Promissoria, Descricao'); SQL.Add('From ContasReceber Where (Parcela = 1) and CodSaidas = '+IntToStr(Cod)); Open; end; Alexandre Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Vivendo&Aprendendo
Preciso diferenciar dois registros com o mesmo código e mostar um deles mas está dando erro na minha consulta. Onde esta errado?
Alexandre
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.