05 Mar 2013 09:40
05 Mar 2013 12:49
12 Mar 2013 10:42
main.CB_Modelo.Refresh
12 Mar 2013 11:10
Puxa colega você pede ajuda, solicitamos para que poste seu código ou até mesmo podia ser um código exemplo. Você resolve por si e aí deixa a todos nós sem saber qual foi a solução ? Como vamos poder ajudá-lo sem saber o que você está fazendo ? Gostaria de contar com a sua compreensão e disponibilidade, pois os outros colegas podem passar pelo que você passou e a exposição de soluções sempre é bem vinda. Assim sem código, fica difícil entender e poder te ajudar, isto já é de conhecimento de todos. Sabe lá se você empregou uma solução viável para o próximo passo...rcb2002 escreveu:alxsts escreveu:se você postar o trecho de código em questão será de grande valia para quem puder analisar e para você mesmorcb2002 escreveu:o motivo da minha pergunta: não consigo atualizar os controles da página principal do programa (TEXTBOXes, COMBOs, etc) quando navego pelo BROWSE com o ON CHANGE! Gostaria de navegar e ir atualizando.
Amigão, consegui fazer. Bastou uma procura mais aprofundada aqui no Forum e encontrei exatamente como fazer. Obrigado. Agora uma outra dúvida
12 Mar 2013 15:25
go top
main.browse_1.value := recno()
main.browse_1.refresh
12 Mar 2013 16:15
Agradeço o seu retorno e a sua explicação. Não pense que foi ma advertência, longe disso, apenas uma ressalva para que não vire hábito com os participantes daqui do fórum. Entenda que só podemos ficar fortes, não por responder e resolver o problema a uma única pessoa. Senão que toda experiência relatada, seja na dúvida como na solução, pode significar um grande aprendizado para aqueles que procuram os mesmo que outros relataram.rcb2002 escreveu:Cara... um milhão de desculpas. Como eu encontrei a resposta aqui no Forum mesmo achei que fosse ser advertido por isso.
Importante o seu relato, as vezes uma figura expressa mais que palavras. O mesmo acontece em programação. Não se trata de alguém tirar proveito copiando o programa de outros, também sei que não foi por isso que você não postou o seu código. Como já dizemos anteriormente, é importante visualizar o código em questão, não precisa copiar o programa todo. Pode ser simplificado em forma de exemplo para que possamos situar-nos na mesma base que o seu programa está sendo construído. E nada melhor de exemplificar ou expor o código para uma solução mais adequada.Feito isso, o problema foi resolvido. Lamento e não vai acontecer novamente. Estou adimplente agora pra aguardar uma solução para a minha dúvida seguinte?
Assim de palavra, eu posso te dizer que a única forma de "atualizar" os dados de um ComboBox em tempo de execução é deletando todos os itens e adicionando-os todos novamente. Senão me engano a função para deletar é Form_1.Combo_1.DeleteAllItems e para adicionar é Form_1.Combo_1.AddItem(aViewOptions[i]) para você ver em forma de exemplo, baixe o View_Build_Log daqui da seção de Downloads e veja o View_Build_Log.prg.rcb2002 escreveu:tenho uns ComboBoxes que vão buscar os itens de banco de dados. Eu gostaria de inserir um item nesse bando e atualizar "ao vivo", sem sair do sistema
13 Mar 2013 11:20
LOCAL m_entrada := alltrim( InputBox( 'Insira AQUI o novo item:'+ x_campo , 'Inclusão de Item' ) )
If &nAlias->(DBSeek(m_entrada))
MsgExclamation("Este item já existe! Você não pode cadastrá-lo duas vezes!","Atenção..:")
Else
[....]
EndIf
13 Mar 2013 11:42
Entendi. Essa procura você faz pelo DBSEEK() ? Isso acontece porque o seek ou dbseek encontra a string "OPTIPLEX" mas se você não remover os espaços do GET ou TEXTBOX, isto é a string tendo o mesmo tamanho do que o tamanho do que a chave foi composta, daí irá procurar de forma exata. (eu tinha escrito antes sobre o lSoftSeek, esqueça. Foi erro meu, desconsidere.)rcb2002 escreveu:Meu banco tem um item chamado OPTIPLEX 370. Quando tento cadastrar OPTIPLEX (sem o numeral) o sistema me retorna que o item já existe. Como posso evitar isso?
18 Mar 2013 15:28
28 Ago 2013 21:02
29 Ago 2013 08:11
Sim isto está correto, tanto em Harbour como em Clipper, pois você disse que no dbf tem "OPTIPLEX 370" cadastrado e quando você confirma "OPTIPLEX" já diz que existe. Pois entende-se que a condição é atendida ao encontrá-la. Pois você deveria então usar o dbSeek( m_entrada, .T.) em vermelho é o parâmetro lSoftSeek.rcb2002 escreveu:Meu banco tem um item chamado OPTIPLEX 370. Quando tento cadastrar OPTIPLEX (sem o numeral) o sistema me retorna que o item já existe. Como posso evitar isso?
..//..
Como o campo no meu DB tinha 25 caracteres, aumentei o tamanho da variável com o PADR para 25 caracteres e só assim encontrou. Mas não acredito que esse seja o caminho correto.
If the SOFTSEEK flag is on or if <lSoftSeek> is set to a logical true (.T.) the value of Found() will be a logical false and Eof() will be false if there is an item in the index key with a greater value than the key expression <expKey>; at this point the record pointer will position itself on that record. However, if there is no greater key in the index, Eof() will return a logical true (.T.) value. If <lSoftSeek> is not passed, the function will look to the internal status of SOFTSEEK before performing the operation. The default of <lSoftSeek> is a logical false (.F.)
Exemplo:rcb2002 escreveu:E numa pergunta acima, o grande problema do 'refresh" nos ComboBoxes: veja que a sugestão do Form_1.Combo_1.DeleteAllItems atende mas não consigo reconstruí-los com a nova estrutura, já que não existe o Form_1.Combo_1.Refresh. Alguma idéia sobre como proceder?
Win_1.Combo_2.DeleteAllItems
Win_1.Combo_2.AddItem( <cada_item> )
aItem:={"item 1","ietm 3","item 4"}
For i=1 To Len(aItem)
Win_1.Combo_2.AddItem( aItem[i] )
Next