08 Mai 2020 14:02
Fatal: Unable to open file 'RTLMT.LIB'
08 Mai 2020 14:04
d:\xharbour\bin>type hbmk.hbc
gui=yes
strip=yes
compr=yes
08 Mai 2020 14:12
@echo off
if "%1" == "-find" goto :find
if "%1" == "-doc" goto :find
if "%1" == "-fullhelp" goto :find
if "%1" == "-help" goto :find
xhbmk2 -xhb %*
goto :fim
:find
xhbmk2 %*
:fim
08 Ago 2020 12:26
Function ChecaCli(a_SQL,aTipo,Lin,Col,Tam,FuncC)
Private NomeCampos,UnSelect:=Str(Select(),2)
Private wRow:=Row(),wCol:=Col()
a_SQL:=If(a_SQL=Nil,.F.,a_SQL)
If a_SQL=.T. //é em sql a pesquisa
a_Campos :=FB_pegaEstrutura("TB_COLABORADOR") //pego os campos da tabela colaboradores
oTempo_DBF:=HoraTmp() //nomeio um temporario
OpenTmp(a_Campos,"NOME","&oTempo_DBF.",,,,,,,.F.) //crio o temporario vazio com a estrutura do TB_COLABORADOR
DbSelectArea(oTempo_DBF) //seleciono o temporario
DBF_CargaTH("TB_COLABORADOR","*","",a_Campos) //dou uma carga no temporario com tudo que tem em TB_COLABORADOR + de 6.000 registros (lento)
EndIf
NomeCampos:=
{{"codigo","Abreviate(nome,60)","venda","ShowSituacao(situacao)","RetVar()","RetRg()","Abreviate(endereco,30)","numero","e_mail","h_page","RP"},;
{"@R 999999999","@!","@!","@!","@!","@!","@!","@!","@X","@X","@!"},;
{"CÓDIGO","NOME DO CLIENTE","S","SITUAÇÃO ATUAL DO CLIENTE","CPF/CGC","RG/IEST","ENDEREÇO","NUMERO","EMAIL","HOMEPAGE","RP"}}
o_MsgR:=" "
NewDbBusca(04,00,,,"Clientes",NomeCampos,,o_MsgR,,,,,,.T.) // mostro em dbedit o conteudo do temporario no formato acima
Function DBF_CargaTH(oTabela,oPesquisa,oCondicao,oCampos)
Return pThread := hb_StartRead( Modulo_Carga(oTabela,oPesquisa,oCondicao,oCampos) ) //retornando assim da erro
Return pThread := hb_StartRead( {|| Modulo_Carga(oTabela,oPesquisa,oCondicao,oCampos) } ) //retornando assim nao da erro, mas retorna vazio
Return Modulo_Carga(oTabela,oPesquisa,oCondicao,oCampos) //retornando assim, funciona mas demora, pq são 6.000 registros, por isto colocar em segundo plano, pq aí ele passaria para abrir o dbedit mesmo com poucos dados e iria inserindo enquanto seria pesquisado os clientes, algo assim.
Static Function Modulo_Carga(oTabela,oPesquisa,oCondicao,oCampos)
Local i_m,i_l,oCampo,oDados
Local oSQL := DB_SQL_SELECT(oTabela,oPesquisa,oCondicao)
For i_m:= 2 To Len(oSQL) //todo registro começa da linha 2
DbAppend()
For i_l:= 1 To Len(oCampos)
oCampo:=AllTrim(oCampos[i_l,1])
oDados:=DB_SQL_Fields(oSQL,oCampo,i_m)
Field->&oCampo. := oDados
Next
Next
Return .T.
08 Ago 2020 15:26
hb_threadStart( hb_bitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE), @Modulo_Carga(), oTabela, oPesquisa, oCondicao, oCampos )
10 Ago 2020 09:14
10 Ago 2020 09:37
10 Ago 2020 09:50
Function DBF_CargaTH(oTabela,oPesquisa,oCondicao,oCampos)
Return pThread := hb_threadStart( hb_bitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE), @Modulo_Carga(), oTabela, oPesquisa, oCondicao, oCampos )
10 Ago 2020 17:48
10 Ago 2020 19:44
dou uma carga no temporario com tudo que tem em TB_COLABORADOR + de 6.000 registros (lento)
Local oSQL := DB_SQL_SELECT(oTabela,oPesquisa,oCondicao)
10 Ago 2020 21:39
nThread := Hb_ThreadStart( Hb_BitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), {|| ExecQuery( cQuery, @aDadosCob, @cErro, aChave ) } )
WaitThread( nThread )
FUNCTION ExecQuery( cQuery, aDados, cErro aChave )
LOCAL oRecordSet
Hb_Default(@aDados, {})
Hb_Default(@cErro, "")
Hb_Default(@aChave, {})
IF oConexao:AdoSelect( @oRecordSet, @aDados, cQuery, aChave, , @cErro, , oClPF:ListaFuncoes() ) == 0
ENDIF
RETURN aDados
FUNCTION WaitThread( nThread )
DO WHILE .T.
IF Hb_ThreadWait( nThread, 0.1, .T. ) == 1
EXIT
ENDIF
hwg_DoEvents()
ENDDO
RETURN Nil
10 Ago 2020 21:49
10 Ago 2020 21:54
10 Ago 2020 21:56
10 Ago 2020 23:33