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

 


Responder a