Fórum Ajuda com um Select. #335451
30/12/2006
0
tenho duas tabelas
TAB_CLIENTES
COD_CLIENTE
NOME
COD_CIDADE
-----------------------------
TAB_CIDADES
COD_CIDADE
NOME
UF
------------------------------
fiz um select na tabela TAB_CLIENTES da seguinte forma: retirado de um exemplo das video aulas da ClubeDelphi.
é o seguinte a consulta sql esta correta, por que eu testei no IBExpert ela funciona inclusive se eu alterar alguns dados desde que naum sejam os dois campos que são criados a partir da subquery. Porem quando eu vou para o delphi, e monto a estrura:
SQLCONNECTION -> SQLDATASET -> DATASETPROVIDER -> CLIENTDATASET -> DATASOURCE
ela fas consultas normalmente, porem INSERT, DELETE, APPEND não funciona de forma alguma.
Quando eu tento fazer um insert, no momento que eu passo o parametro [b:cc425b0415]ClientDataSet1.ApplyUpdates(0)[/b:cc425b0415] ele me retorna o erro [b:cc425b0415]Table unknown tab_cidades[/b:cc425b0415] e não aplica os dados no DB. Também ja configurei os [b:cc425b0415]ProviderFlags[/b:cc425b0415] dos campos da [b:cc425b0415]SqlDataSet[/b:cc425b0415] mas não da certo. Gostaria de pedir se alguem pode me ajudar, desde ja agradeço.
Godzilla_xf
Curtir tópico
+ 0Posts
31/12/2006
Godzilla_xf
Gostei + 0
31/12/2006
Emrinfo
Gostei + 0
31/12/2006
Godzilla_xf
vou testar vlw.
Gostei + 0
31/12/2006
Godzilla_xf
vou testar vlw.[/quote:fa00308be9]
Continua o mesmo problema.
Gostei + 0
02/01/2007
Emrinfo
No DataSetProvider eu coloco TRUE para (poAutoRefresh, poPropagateChange e po AllowCommandText).
E na hora de gravar,
cds_Cliente.Post;
cds_Cliente.ApplyUpdates(0);
if cds_Cliente.ApplyUpdates(0) <> 0 then
begin
Application.MessageBox(´Não foi possível gravar o registro!!´, ´Controle Fiscal´, MB_ICONERROR+MB_OK);
cds_Cliente.CancelUpdates;
end;
Eu tive este problema se no banco é case sensitive ainda mais se tiver usando o Command Text, defina sempre no banco em maiusculo, porque no Ibexpert irá funcionar mas no Delphi nao, e na select sempre coloque a tabela em maiusculo no SQLDATASET e no CLIENTDATASET .
Gostei + 0
02/01/2007
Godzilla_xf
Vlw, vou testar e posto se deu certo Ok. té +++ e obrigado.
Gostei + 0
02/01/2007
Macario
Você citou que ja configurou os providerflags dos campos, então não esqueça de setar a propriedade [b:0401e0115b]UpdateMode[/b:0401e0115b] do DSP para [b:0401e0115b]upWhereKeyOnly[/b:0401e0115b].
Outro ponto, o que compôe o seu ambiente de trabalho(Delphi, banco, driver,etc)?
Esta sua instrução poderia ser simplificada fazendo uso de inner join.
[]´s
Gostei + 0
02/01/2007
Godzilla_xf
e num sei o que esta errado, fiz com [b:0945e6f7df]inner join[/b:0945e6f7df] e tbm da o mesmo erro.
As Sql´s estao aqui:
o Inner Join
este eu num sei se esta certo, mas a seleção quando passado um valor para o parametro [b:0945e6f7df]COD_CLIENTE[/b:0945e6f7df] retorna os valores desejados. té ++++
Gostei + 0
02/01/2007
Emerson Nascimento
SELECT TC.COD_CLIENTE, TC.NOME, TC.ENDERECO, TC.BAIRRO, TC.COD_CIDADE, CID.NOME AS cIDADE, CID.UF, TC.CEP, TC.FONE, TC.CPF_CNPJ, TC.INSCRICAO_E, TC.INSCRICAO_M FROM TAB_CLIENTES TC INNER JOIN TAB_CIDADES CID ON (CID.COD_CIDADE = TC.COD_CIDADE) WHERE TC.COD_CLIENTE = :COD_CLIENTE
Gostei + 0
06/01/2007
Godzilla_xf
SELECT TC.COD_CLIENTE, TC.NOME, TC.ENDERECO, TC.BAIRRO, TC.COD_CIDADE, CID.NOME AS cIDADE, CID.UF, TC.CEP, TC.FONE, TC.CPF_CNPJ, TC.INSCRICAO_E, TC.INSCRICAO_M FROM TAB_CLIENTES TC INNER JOIN TAB_CIDADES CID ON (CID.COD_CIDADE = TC.COD_CIDADE) WHERE TC.COD_CLIENTE = :COD_CLIENTE
Olá, vou testar e seguir o que vc me falow, assim que testar posto aqui o resultado, blz té +++
Gostei + 0
08/01/2007
Godzilla_xf
Coloquei toda a instrução SQL em MAIUSCULO.
Agradeço a todos pela ajuda, muito obrigado, e até ++++
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)