Browse com ADO
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Browse com ADO
Uma coisa importante que esqueci na conexão do exemplo do browse, no início do post:
conexão.cursorlocation = 3 // adUseClient
Sem isso, não há navegação no resultado e dá erro no browse.
Se puder, vou editar, porque isso é de extrema importância.
Estava quebrando a cabeça pra ajudar um usuário fazer funcionar no XHarbour, e no final o problema era esse.
conexão.cursorlocation = 3 // adUseClient
Sem isso, não há navegação no resultado e dá erro no browse.
Se puder, vou editar, porque isso é de extrema importância.
Estava quebrando a cabeça pra ajudar um usuário fazer funcionar no XHarbour, e no final o problema era esse.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Browse com ADO
Faz um teste, só de curiosidade usando o SQLMIX + ODBC.Itamar M. Lins Jr. escreveu:Isso é um problema da rede mapeada, usando servidores de DBF, NetIO, LetoDbf, ADS, isso não "ecziste"
Como eu disse, normalmente eu não edito no browse. Mas existe essa possibilidade.
Fica quase igual ADO direto, mas acho que a diferença é aceitável.
Acho que você é o que mais usa opções diferentes, então tem condições de avaliar.
A vantagem?
Por ODBC basta o que vém no Harbour.
Pelo menos quem está começando já vai direto, sem se perder com necessidades extras do Harbour.
Depois que "brincar" e gostar do troço, aí cada um decide se continua, ou se usa as opções extras.
Aqui achei ruim sobre a memória utilizada pelo Harbour no SQLMIX+ODBC.
Mas no ADO nem dá pra saber, porque fica fora do programa, fica por conta do Windows mesmo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Browse com ADO
Antes de usar o SQL eu usava o BROWSE DATABASE e editava diretamente no BROWSE agora com array a coisa ficou meio estranha, ai fique pensando porque não colocar os dados na mesma tela em um campo editável e quando quiser modificar dar um clique na linha do browse e passar a editar no campo abaixo.
sei la sao ideias , o que voces acham????
sei la sao ideias , o que voces acham????
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Browse com ADO
Num ambiente de janelas... porque não abrir uma janela?
Vai apresentar tudo com muito mais detalhes.
Vai apresentar tudo com muito mais detalhes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Browse com ADO
Ola!
Quintas, o browse é fundamental para PDV, ponto de venda, O vendedor digita o código apenas e ou passa o leitor de códigos de barras. Nisso ele apenas muda a quantidade se for o caso, e pula para a próxima linha de baixo. Essa é um exemplo que até com SQL tem que jogar em ARRAY para depois salvar, no DBF já fica pronto.
Neste caso ninguém faz JANELA ou DIALOG, é sempre uma linha debaixo da outra, dbedit/browse editáveis.
Saudações,
Itamar M. Lins Jr.
Quintas, o browse é fundamental para PDV, ponto de venda, O vendedor digita o código apenas e ou passa o leitor de códigos de barras. Nisso ele apenas muda a quantidade se for o caso, e pula para a próxima linha de baixo. Essa é um exemplo que até com SQL tem que jogar em ARRAY para depois salvar, no DBF já fica pronto.
Neste caso ninguém faz JANELA ou DIALOG, é sempre uma linha debaixo da outra, dbedit/browse editáveis.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Browse com ADO
Gostaria de saber se existe alguma forma de filtrar um campo no Tbrowse com ADO.
Com o dbedit eu fazia:
Mas no Tbrowse com ADO isso não funciona.
Poderiam me ajudar, por favor?
Com o dbedit eu fazia:
Código: Selecionar todos
set filter to cPrd$produto
Poderiam me ajudar, por favor?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Browse com ADO
oRs:Filter = "expressão SQL"cjp escreveu:Gostaria de saber se existe alguma forma de filtrar um campo no Tbrowse com ADO.
https://www.w3schools.com/asp/prop_rs_filter.asp
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Browse com ADO
Eu tentei desta forma:
Mas não deu certo. Está dando o erro WINOLE/1006 Os argumentos sÒo incorretos, estÒo fora do intervalo aceitßvel ou estÒo em conflito. (0x800A0BB9): ADODB.Recordset.
Tem algo errado?
Código: Selecionar todos
prd=space(15)
@ maxrow()-1,1 say "Produto:"get prd pict "@!"
read
oRs:Filter="upper(produto) like '%"+alltrim(prd)+"%'"
Tem algo errado?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Browse com ADO
A expressão tem que ser no formato ADO/SQL.cjp escreveu:Tem algo errado?
E Upper() não faz parte disso.
Código: Selecionar todos
oRs:Filter = "produto like '%" + alltrim( prd ) + "%'"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Browse com ADO
Coloquei upper para pegar texto com maiúsculas ou minúsculas. Vi neste link: https://www.w3schools.com/sql/func_mysql_upper.asp.
De qualquer forma, testei agora sem o upper, e funcionou tanto com maiúsculas e minúsculas.
Muito obrigado.
Só mais uma dúvida, por favor: precisaria dar um "refresh" no tbrowse, ou algo que atualizasse a lista depois do filter, porque ele está filtrando, mas só está aparecendo os itens filtrados um a um, à medida que teclo as setas. Não tem como aparecer todos os itens filtrados?
Minha função está assim:
De qualquer forma, testei agora sem o upper, e funcionou tanto com maiúsculas e minúsculas.
Muito obrigado.
Só mais uma dúvida, por favor: precisaria dar um "refresh" no tbrowse, ou algo que atualizasse a lista depois do filter, porque ele está filtrando, mas só está aparecendo os itens filtrados um a um, à medida que teclo as setas. Não tem como aparecer todos os itens filtrados?
Minha função está assim:
Código: Selecionar todos
DO WHILE .T.
oTBrowse:forceStable()
oTBrowse:refreshCurrent()
nKey := Inkey(0)
if upper(chr(nkey)) =="P" .and. procname(1)="BROWSECOMPRAS"
prd=space(15)
@ maxrow()-1,1 say "Produto:"get prd pict "@!"
read
oRs:Filter="produto like '%"+alltrim(prd)+"%'"
elseif nkey == 27
cSair="S"
exit
endif
IF oTBrowse:applyKey( nKey ) == TBR_EXIT
cSair="S"
EXIT
ENDIF
ENDDO
Inacio de Carvalho Neto
Browse com ADO
SQL use
UpperCase(campo)
UpperCase(campo)
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Browse com ADO
Deu certo. Muito obrigado.
Aproveitando, se puder me ajudar com mais uma questão: nesse browse, antes, aparecia o cursor normalmente. Em determinado momento, parou de aparecer o cursor. Não sei o que eu possa ter feito de errado pra isso acontecer. Já coloque set cursor on, mas não resolveu.
Saberia me dizer o que pode estar causando o sumiço do cursor neste caso?
Aproveitando, se puder me ajudar com mais uma questão: nesse browse, antes, aparecia o cursor normalmente. Em determinado momento, parou de aparecer o cursor. Não sei o que eu possa ter feito de errado pra isso acontecer. Já coloque set cursor on, mas não resolveu.
Saberia me dizer o que pode estar causando o sumiço do cursor neste caso?
Inacio de Carvalho Neto
Browse com ADO
Você precisa identificar que "determinado momento" é esse. E fazer a restauração do cursor quando esse momento terminar.
Um caso corriqueiro ocorre assim :
Se dentro da FUNCAOPESQUISA você usar SET CURSOR OFF e não restaurar o cursor ao voltar, então ele vai sumir quando sair dela.
Outra coisa importante, é mais um conselho :
Evite SET CURSOR ON e SET CURSOR OFF
Prefira a função SetCursor() porque ela sempre retorna o estado anterior do cursor.
Por exemplo :
Um caso corriqueiro ocorre assim :
Código: Selecionar todos
@ x,y SAY "tITULO" GET cVariavel
@ x+1,y SAY "TITULO 2" GET cVariavel2 VALID FUNCAODEPESQUISA()
SET CURSOR ON
READ
SET CURSOR OFF
Outra coisa importante, é mais um conselho :
Evite SET CURSOR ON e SET CURSOR OFF
Prefira a função SetCursor() porque ela sempre retorna o estado anterior do cursor.
Por exemplo :
Código: Selecionar todos
inicio da função de pesquisa
LOCAL nCursor := SetCursor(0) // Desativa o cursor e envia o estado anterior para nCursor
aqui suas rotinas
antes de retornar faça :
SetCursor( nCursor ) // Isso garante a volta ao estado anterior
RETURN

