Danilo, Pegando um gancho na discursão de vocês...
Num cadastro de clientes, onde tenho que informar qual a cidade, como no seu exemplo, qual é a melhor forma de trabalhar? Eu sempre trabalhei criando um campo lookup (fkLookup) no clientdataset (cliente, no caso do seu exemplo) e na tela, coloco um DBLookupComboBox apontando para o field lookup que criei. Essa é a melhor forma? Outra coisa: (ainda seguindo o seu exemplo) quando vou gravar o cliente, e dá algum erro na gravação (um campo required que não informei, por exemplo), quando tento escolher a cidade, novamente (depois do erro), no DBLookupComboBox, aparece a mensagem 'Cursor Unknow'. Tento novamente mais umas 2 ou 3 vezes e passa. Procurei na net e as sugestões que encontrei não resolveu o problema. Poderia me ajudar com isso? Abusando mais um pouco, outro erro que acontece muito e, apesar de eu estar conseguindo resolver, eu ainda não sei direito o que causa, é o 'invalid point operation' Sabe alguma coisa sobre isso? Agradeço muito qualquer ajuda. Luis Alberto. --- Danilo Rogério <[EMAIL PROTECTED]> escreveu: > Vc nem precisaria fazer este campo lookup. > > Por ex: Se vc abrir o cadastro de cidade, fizer a > inclusão de uma nova cidade, ao sair da tela vc ja > pode atribuir ao campo ID_CIDADE, NOME_CIDADE(da sua > query do cadastro de cliente) a nova cidade > cadastrada. > > Att. > Danilo > > User-BA <[EMAIL PROTECTED]> escreveu: > > Sua explanação sobre a configuração dos Flags foi > por demais esclarecedora. > > Vou aproveita para abusar mais um pouco :) > > No seu exemplo, a SQL sugere que para a tela de > cadastro de clientes > sempre será trazida uma cidade já cadastrada. > (o que vale para os Updates e Deletes). > > Caso seja uma inclusão e a cidade ainda não esteja > cadastrada, nesta > tela disponibilizamos de clientes uma opção para > abrir a tela para o > cadastro da cidades. > > Ok! Tendo que fazer isto, você sugeriria que no > cadastro de clientes > deveria ter um campo fazendo um (lookup/nome da > cidade) entre > cidades/clientes para buscar/trazer o código da > cidade? ou você sugere > alguma outra adaptação em SQL para este fim? Tipo: > Um Lookup em SQL? > > Obrigado pela aula. > Luciano-User-BA. > > Danilo Rogério wrote: > > Não entendi muito bem se COL_CHAVE também faz > parte da chave primaria > > da tabela DICAS(fazendo com que sua tabela tenha > uma chave composta, > > mas vou explicar detalhadamente, a maneira como eu > trabalho > > > > Tabela CIDADE > > ----------------------- > > PK ID_CIDADE > > NOME_CIDADE > > > > Tabela CLIENTE > > ------------------------ > > PK ID_CLIENTE > > NOME_CLIENTE > > FK ID_CIDADE > > > > > > onde PK é Primary Key(chave Primária) e FK é > Foreign Key(Chave > > Estrangeira), no caso de alguem desconhecer essas > notações > > > > Suponhamos que vamos fazer operações de > inclusão, exclusão, > > alteração na tabela CLIENTE, mas queremos mostrar > o nome da cidade que > > este cliente mora. > > > > SELECT A.ID_CLIENTE, A.NOME_CLIENTE, > A.ID_CIDADE, B.NOME_CIDADE > > FROM CLIENTE A, CIDADE B > > WHERE A.ID_CIDADE = B.ID_CIDADE > > > > Bem, vamos aos flags. > > > > 1) Estamos manipulando CLIENTES, certo? Portanto > apenas as colunas > > referentes a tabela de clientes devem ser > atualizadas, ou seja, a > > coluna NOME_CIDADE é meramente demonstrativa. > > > > 2) Configure os providers flags do SQLDataset > ou SQLQuery > > ID_CLIENTE(é a chave) > > pfInfUpdate = True > > pfInfWhere = True > > pfInfKey = True /// Porque esta coluna é a > chave > > pfInfHidden = False > > > > NOME_CLIENTE > > pfInfUpdate = True > > pfInfWhere = True > > pfInfKey = False > > pfInfHidden = False > > > > ID_CIDADE(note que esse campo vem da tabela > CLIENTE, portanto > > deve ser atualizado) > > pfInfUpdate = True > > pfInfWhere = True > > pfInfKey = False > > pfInfHidden = False > > > > > > NOME_CIDADE(não precisa atualizar) > > pfInfUpdate = False > > pfInfWhere = False > > pfInfKey = False > > pfInfHidden = False > > > > 3) Neste mesmo campo NOME_CIDADE, verifique a > propriedade Requerid = > > False > > > > 4) Faça o Passo 2 e 3 no ClientDataSet também > > > > 5) No DataSetProvider, em Update Mode coloque > Where KeyOnly(Você > > muda para update mode porque setamos o flag > pfInfKey para True) > > > > 6) Se quiser ajudar o DataSerProvider mais um > pouco, pode colocar a > > instrução abaixo no EVENTO onGetTableName: > > Table_Name := 'CLIENTE'; > > > > Espero ter esclarecido. E dúvidas, postem aí... > > Danilo Rogério > > Betta Informática > > > > User-BA <[EMAIL PROTECTED]> escreveu: > > > > > > > > Olá! > > > > Me esclareçam... > > > > Tenho 2 tabelas -> DICAS e -> COLABORADORES > > > > Em -> DICAS tenho o campo chave primaria -> > DIC_CHAVE > > e o campo chave estrangeira -> COL_CHAVE > > (COL_CHAVE é a chave primária de -> COLABORADOR) > > > > Neste caso, devo configurar no ClientDataSet -> > ProviderFlags > > > > PfInUpdade = True > > PfInWhere = True > > PfInKey = True > > PfInHiden = False > > > > Da tabela -> DICAS > > para os campos -> DIC_CHAVE > > (chave primaria de DICAS) > > e COL_CHAVE > > (chave estrangeira de -> DICAS e chave primária de > -> COLABORADOR)? > > > > ... > > > > Ou qual a configuração correta neste caso? > > > > Os outros campos de -> DICAS devem ficar: > > > > PfInUpdade = True > > PfInWhere = True > > PfInKey = False > > PfInHiden = False ? > > > > Aproveitando: > > > > Devo setar UpDateMode para -> upWhereAll? > > > > > > > > > > > > > > > _______________________________________________________ > > Yahoo! Acesso Grátis: Internet rápida e grátis. > > Instale o discador agora! > > http://br.acesso.yahoo.com/ > > > > > > > > -- > > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA > MENSAGEM >>>>> > > > > > > > > > > > === message truncated === _______________________________________________________ Yahoo! Acesso Grátis: Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com/ -- <<<<< 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: [EMAIL PROTECTED] 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: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html