Jump to content
Fivewin Brasil

carlosmsi

Membros
  • Posts

    12
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

carlosmsi's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Esqueci de mencionar, então eu estou usado com harbour. O que estou tentando fazer é que no principal tenho um xbrowse, e na thread eu tenho uma função que ficar pegando informações de uma api e grava no banco mariadb e estou tentando retornar no xbrowse principal, só que se eu executo pra conectar com o mariadb no principal da erro dentro da thread, e se executo dentro da thread da erro no principal, e se executo pra conectar nos dois ele não grava no mariadb. Function Main() local oDlgiFood public clientid, clientsecret, nome, senha, token, cUrl, oListaPedidos, oSLFOOD public oBanco token:= 0 CRIARBANCO(@oBanco) clientid:= 'x' clientsecret:= 'x' nome:= 'POS' senha:= 'POS' hb_threadStart(HB_THREAD_INHERIT_PUBLIC,HB_THREAD_INHERIT_PRIVATE,HB_THREAD_INHERIT_MEMVARS, { || AUTENTICACAO(clientid,clientsecret,nome,senha,token,cUrl,@oListaPedidos,@oBanco,@oSLFOOD) } ) cSql:= "SELECT * FROM SLFOOD ORDER BY PED_PED" oSLFOOD:= oBanco:RowSet( cSql, .t. ) DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -10 DEFINE DIALOG oDlgiFood RESOURCE "PRINCIPAL" FONT oFont REDEFINE XBROWSE oListaPedidos; DATASOURCE oSLFOOD ; STYLE FLAT; ID 4009 OF oDlgiFood UPDATE ADD COLUMN TO xbrowse oListaPedidos DATA oSLFOOD:PED_PED WIDTH 130 ALIGN LEFT ; HEADER "PEDIDO" ADD COLUMN TO xbrowse oListaPedidos DATA oSLFOOD:PED_COD WIDTH 100 ALIGN LEFT ; HEADER "ORDEM" //-- Estilo --------------------------------// oListaPedidos:nMarqueeStyle := MARQSTYLE_HIGHLROW oListaPedidos:nColDividerStyle := LINESTYLE_LIGHTGRAY oListaPedidos:nRowDividerStyle := LINESTYLE_LIGHTGRAY oListaPedidos:lAllowColSwapping := .F. //---> Trocar Colunas oListaPedidos:lAllowRowSizing := .F. //---> Nao move as Linhas oListaPedidos:lFooter := .F. //---> Rodapé oListaPedidos:lHScroll := .F. //---> Barra de rolagem horizontal oListaPedidos:bClrSel := {|| {CLR_WHITE,CLR_BLACK}} //---> Cor do selecionado sem clique oListaPedidos:bClrSelFocus := {|| {CLR_BLACK,CLR_AZULCLARO }} //---> Cor do selecionado oListaPedidos:nRowHeight := 20 //---> Tamanho da Linha dos campos ( PADRAO 16) oListaPedidos:nHeaderLines := 02 //---> Numeros de Linhas do Cabecalho. TAMANHO oListaPedidos:nDataLines := 2 //---> Numero de Linhas dos dados ACTIVATE DIALOG oDlgiFood CENTERED RETURN nil ********************************************************************************** FUNCTION AUTENTICACAO(clientid,clientsecret,nome,senha,token,cUrl,oListaPedidos,oBanco,oSLFOOD) //1-AUTENTICANDO //CRIARBANCO(@oBanco) cUrl:= 'https://oauth/token' //CRIAR EM JSON cXml:= [client_id=]+clientid+[&client_secret=]+clientsecret+[&grant_type=password&username=]+nome+[&password=]+senha oHttp:= CreateObject( 'MSXML2.ServerXMLHTTP' ) oHttp:Open( "POST" , cUrl, .F. ) oHttp:setRequestHeader("content-type", "application/x-www-form-urlencoded") oHttp:send(cXml) cc1:= oHttp:ResponseText //PEGAR RESPOSTA JSON aHasRes:= hash() hb_jsondecode(cc1 ,@aHasRes) //Parse JSON to hash token:= aHasRes["access_token"] POLLING(token,oBanco,oListaPedidos,oSLFOOD) RETURN .T. ********************************************************************************** FUNCTION POLLING(token,oBanco,oListaPedidos,oSLFOOD) cUrl:= 'https://events%3Apolling' qSeg:= 0 qSegundos:= 10000//VAL( SUBSTR( TIME(),7,2) ) DO WHILE qSeg <= qSegundos oHttp:= CreateObject( 'MSXML2.ServerXMLHTTP' ) oHttp:Open( "GET" , cUrl, .f. ) oHttp:setRequestHeader("content-type","application/json") oHttp:setRequestHeader("cache-control","no-cache") oHttp:setRequestHeader("accept","application/json") oHttp:setRequestHeader("Authorization","bearer "+token) oHttp:setRequestHeader("cache-control","no-cache") oHttp:setRequestHeader("accept","application/json") oHttp:send() cc1:= ALLTRIM(oHttp:ResponseText) IF oHttp:status = 404 // SEM PEDIDOS oBanco:Execute( "DELETE FROM SLFOOD" ) ELSEIF oHttp:status = 401 //- Unauthorized AUTENTICACAO() ELSEIF oHttp:status = 200 // COM SUCESSO MSGINFO("COM PEDIDO","OK") //MSGINFO(cc1,"OK") HB_MemoWrit('LISTA.TXT',cc1) // GRAVAR COMANDO EM LOG aJSON := {}//hb_hash() HB_JSONDecode(cc1, @aJSON) IF hb_isArray(aJSON) = .T. //deve ser true qtdPed:= Len(ajSon) FOR i=1 TO qtdPed IF aJSON[i]['code'] = "PLACED" oSLFOOD:= oBanco:RowSet( "SELECT * FROM SLFOOD WHERE PED_PED LIKE '"+aJSON[i]['correlationId']+"%'", .T. ) IF EMPTY(oSLFOOD:PED_PED) = .T. MSGINFO("NAO EXISTE ESSE PEDIDO","OK") cSql:= "SELECT * FROM SLFOOD ORDER BY PED_PED" oSLFOOD:= oBanco:RowSet( cSql, .t. ) oSLFOOD:GoBOTTOM() nPED_ID := aJSON[i]["id"] nPED_COD:= aJSON[i]['code'] nPED_PED:= aJSON[i]['correlationId'] NPED_DEH:= aJSON[i]['createdAt'] oBanco:Insert("SLFOOD", "PED_ID , PED_COD, PED_PED, PED_DEH", ; { nPED_ID ,nPED_COD,nPED_PED,nPED_DEH}) cReference:= aJSON[i]['correlationId'] ORDES(cReference,token) else MSGINFO("já existe esse pedido") nPED_ID := aJSON[i]["id"] nPED_COD:= aJSON[i]['code'] nPED_PED:= aJSON[i]['correlationId'] NPED_DEH:= aJSON[i]['createdAt'] oBanco:Replace("SLFOOD", "PED_ID , PED_COD, PED_PED, PED_DEH", ; { nPED_ID ,nPED_COD,nPED_PED,nPED_DEH}) ENDIF ENDIF NEXT ENDIF ENDIF cSql:= "SELECT * FROM SLFOOD ORDER BY PED_PED" oSLFOOD:= oBanco:RowSet( cSql, .t.) oListaPedidos:oDbf:= oSLFOOD oListaPedidos:Refresh(.T.) ENDDO RETURN .T. o erro que ocorre quando coloco pra executar só no principal ou só dentro da thread é Called from MYSQL_EXECUTE(0) in .\source\internal\FWMARIA.PRG Called from FWMARIACONNECTION:EXECUTE_SQL(5771) in .\source\internal\FWMARIA.PRG Called from FWMARIACONNECTION:EXECUTE(6025) in .\source\internal\FWMARIA.PRG Called from POLLING(197) in IFOOD.PRG Called from AUTENTICACAO(169) in IFOOD.PRG Called from (b)MAIN(44) in IFOOD.PRG
  2. Quando tento acessar o comando EX: oSLFOOD:= oBanco:RowSet( "SELECT * FROM SLFOOD" , .t. ) no principal funciona, mas dentro da função da thread da erro como no exemplo, mais ou menos o que queria fazer. Function Main() cPastadoBanco := cLinguagem := cFilePath( ExeName() ) FWCONNECT oBanco HOST cPastadoBanco LANGFOLDER cLinguagem DATABASE "BASEMDB" IF oBanco == nil ? "Connect fail" ELSE aEstr:={} AADD( aEstr ,{"PED_ID" ,'varchar(60)', 60,0,"PRI" } ) IF !oBanco:TableExists( "SLFOOD" ) oBanco:CreateTable( "SLFOOD",aEstr ) ELSE //lChg := ChkStruct("slfood", aEstr, oBanco) ENDIF ENDIF //EXECUTAR THREAD FUNÇÃO AUTENTICACAO hb_threadStart( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS, { || AUTENTICACAO() } ) // FORA DA THREAD //AQUI FUNCIONA O COMANDO DE MARIADB NORMAL oSLFOOD:= oBanco:RowSet( "SELECT * FROM SLFOOD" , .t. ) RETURN .t. ***************************************************** FUNCTION AUTENTICACAO() //ENTRANDO NA FUNÇÃO POR THREAD //SE EU TENTAR USAR O COMANDO DE MARIADB AQUI DÁ ERRO oSLFOOD:= oBanco:RowSet( "SELECT * FROM SLFOOD WHERE PED_PED LIKE 'PLC%'" , .t. ) RETURN .T.
  3. Alguém sabe como faço para criar um webservice?
  4. Boa Tarde. Sou leigo em relacao ao Browse Gostaria de Saber compo alterar dados do campo. Estou montando um Gerador de Banco de Dados.Um DBU Onde vai Criar o Dbf entao eu preciso definir os Campos, Tamanho, Tipo. Nao estou conseguindo alterar o campo no TxBrowse Tenho um arquivo dbf e gostaria de alterar diretamente os campos. consegui deixar em modo para editar mas quando dou enter ele nao altera o campo. exemplo: Criei Assim DEFINE DIALOG oDlg TITLE "Browse Criação dos Campos" ; FROM 0,0 TO 23,75 ; STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ; WS_MAXIMIZEBOX, WS_MINIMIZEBOX ) @ 01,01 COLUMN BROWSE oBrw ; COLORS BrwText, BrwBack ; Alias &wAlias. ; FONT oGetFnt ; SIZE 272, 150 OF oDlg ADD COLUMN TO BROWSE oBrw DATA &wAlias.->NAME HEADER "NOME" ; PICTURE "@!" ALIGN LEFT EDITABLE ADD COLUMN TO BROWSE oBrw DATA &wAlias.->TYPE HEADER "TYPE" ; PICTURE "@!" ALIGN LEFT EDITABLE ADD COLUMN TO BROWSE oBrw DATA &wAlias.->WIDTH HEADER "WIDTH" ; PICTURE "999" ALIGN LEFT EDITABLE ADD COLUMN TO BROWSE oBrw DATA &wAlias.->DEC HEADER "DEC" ; PICTURE "99" ALIGN LEFT EDITABLE ADD COLUMN TO BROWSE oBrw DATA &wAlias.->DESCRICAO HEADER "DESCRICAO" ; PICTURE "@!" ALIGN LEFT EDITABLE oBrw:lCellStyle = .t. oBrw:bLDblClick = { | nRow, nCol | EditCell( oBrw, nRow, nCol ) } oBrw:nLineStyle := 1 // LINHA oBrw:REFRESH()
  5. Boa Tarde. Sou leigo em relacao ao Browse Gostaria de Saber compo alterar dados do campo. Estou montando um Gerador de Banco de Dados.Um DBU Onde vai Criar o Dbf entao eu preciso definir os Campos, Tamanho, Tipo. Nao estou conseguindo alterar o campo no TxBrowse Tenho um arquivo dbf e gostaria de alterar diretamente os campos. consegui deixar em modo para editar mas quando dou enter ele nao altera o campo. exemplo: Criei Assim DEFINE DIALOG oDlg TITLE "Browse Criação dos Campos" ; FROM 0,0 TO 23,75 ; STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ; WS_MAXIMIZEBOX, WS_MINIMIZEBOX ) @ 01,01 COLUMN BROWSE oBrw ; COLORS BrwText, BrwBack ; Alias &wAlias. ; FONT oGetFnt ; SIZE 272, 150 OF oDlg ADD COLUMN TO BROWSE oBrw DATA &wAlias.->NAME HEADER "NOME" ; PICTURE "@!" ALIGN LEFT EDITABLE ADD COLUMN TO BROWSE oBrw DATA &wAlias.->TYPE HEADER "TYPE" ; PICTURE "@!" ALIGN LEFT EDITABLE ADD COLUMN TO BROWSE oBrw DATA &wAlias.->WIDTH HEADER "WIDTH" ; PICTURE "999" ALIGN LEFT EDITABLE ADD COLUMN TO BROWSE oBrw DATA &wAlias.->DEC HEADER "DEC" ; PICTURE "99" ALIGN LEFT EDITABLE ADD COLUMN TO BROWSE oBrw DATA &wAlias.->DESCRICAO HEADER "DESCRICAO" ; PICTURE "@!" ALIGN LEFT EDITABLE oBrw:lCellStyle = .t. oBrw:bLDblClick = { | nRow, nCol | EditCell( oBrw, nRow, nCol ) } oBrw:nLineStyle := 1 // LINHA oBrw:REFRESH()
  6. como faço para mostrar as pastas/diretorios existentes do micro, como o windows explorer Sou leigo no Fivewin e xHarbou mas estou gostando, pois sou programador muito antigo em Clipper mas consegui mudar meu sistema de Clipper para Fivewin e acabei de converter de Fivewin para xHarbour. Gostaria de Saber como eu faço uma Janela mostrando os Diretorios/Pasta com os arquivos existentes Como o windows explorer. Ja Transportei os meus Prgs executando no xDev Studio v0.65. Utilizo o Pelles para milhas dll e compilo meus programas no xHarbour devo usar um Treeview para mostrar as pastas e como faco o comando para carregar as pastas com o comando REDEFINE ... Alguem pode me dar uma dica de como fazer ou qual a melhor maneira. Pois eu tenha uma opção no sistema para gerar um arquivo txt e fiz uma tela para gravar o arquivo em Disquete ou no micro na pasta especifica mas agora gostaria de colocar a opção para o usuario escolher qual pasta ele deseja salvar o arquivo. Grato se alguem puder me ajudar.
  7. como faço para mostrar as pastas/diretorios existentes do micro, como o windows explorer Sou leigo no Fivewin e xHarbou mas estou gostando, pois sou programador muito antigo em Clipper mas consegui mudar meu sistema de Clipper para Fivewin e acabei de converter de Fivewin para xHarbour. Gostaria de Saber como eu faço uma Janela mostrando os Diretorios/Pasta com os arquivos existentes Como o windows explorer. Ja Transportei os meus Prgs executando no xDev Studio v0.65. Utilizo o Pelles para milhas dll e compilo meus programas no xHarbour devo usar um Treeview para mostrar as pastas e como faco o comando para carregar as pastas com o comando REDEFINE ... Alguem pode me dar uma dica de como fazer ou qual a melhor maneira. Pois eu tenha uma opção no sistema para gerar um arquivo txt e fiz uma tela para gravar o arquivo em Disquete ou no micro na pasta especifica mas agora gostaria de colocar a opção para o usuario escolher qual pasta ele deseja salvar o arquivo. Grato se alguem puder me ajudar.
  8. obrigado pelas dicas e pelo exemplo ate breve
  9. Eu posso estar falando asneira mas parece que entendi que O COMANDO RESOURCE COM o nome que esta em "" seria o nome da tela feito no WORKSHOP entao eu por enquanto nao utilizo ele por enquanto, seria isto agora a respeito do REDEFINE GET OS campos nao ficam aparecendo para que possa ser digitado estou so usando desta forna @ 01,01 GET Cliente PICTURE "999999" @ 02,01 GET Nome PICTURE "@!" @ 03,01 GET cidade PICTURE "@!" @ 04,01 GET ESTADO PICTURE "@!" @ 05,01 GET Telefone PICTURE "@!" quem pode me dar umas instrucões fico grato
  10. sou programador em clipper a muitos anos e agora estou começando a programar em fivewin se alguem puder me ajudar estou fazendo uns teste iniciais com gets fiz o programa abaixo mas o programa so executa se eu desabilito o RESOURCE e ao executar nao aparece as caixas de edicao de cada campo o ponteiro do mouse fica parado no canto esquerdo da tela. para que server O RESOURCE e como faço para aparecer os campos de cada get na tela. se eu usar o @ 01,05 GET cliente PICTURE "999999" funciona mas nao precisaria mais né Meu exemplo: #INCLUDE "FIVEWIN.CH" FUNCTION MAIN() LOCAL OD,OGet LOCAL Cliente,nome,cidade,estado,telefone cliente:= 0 nome:= SPACE(40) cidade:= SPACE(30) estado:= SPACE(02) telefone:= space(14) // DIALOGO COM GETS DEFINE DIALOG OD //RESOURCE "mirecurso" DEFINE FONT OF NAME "times new roman" size 10,20 REDEFINE GET oGet var Cliente ID 101 of OD color (rgb(255,255,000),rgb(128,128,000)) REDEFINE GET oGet var nome ID 102 of OD font of REDEFINE GET oGet var cidade ID 103 of OD on change tone(1000,1) REDEFINE GET oGet var estado ID 104 of OD valid(tone(1000,1),.t.) REDEFINE GET oGet var telefone ID 105 of OD ACTIVATE DIALOG OD centered RETURN(NIL) programas usados CLIPPER 5.3,BLINKER 7, FIVEWIN 7
  11. sou programador em clipper a muitos anos e agora estou começando a programar em fivewin se alguem puder me ajudar estou fazendo uns teste iniciais com gets fiz o programa abaixo mas o programa so executa se eu desabilito o RESOURCE e ao executar nao aparece as caixas de edicao de cada campo o ponteiro do mouse fica parado no canto esquerdo da tela. para que server O RESOURCE e como faço para aparecer os campos de cada get na tela. se eu usar o @ 01,05 GET cliente PICTURE "999999" funciona mas nao precisaria mais né Meu exemplo: #INCLUDE "FIVEWIN.CH" FUNCTION MAIN() LOCAL OD,OGet LOCAL Cliente,nome,cidade,estado,telefone cliente:= 0 nome:= SPACE(40) cidade:= SPACE(30) estado:= SPACE(02) telefone:= space(14) // DIALOGO COM GETS DEFINE DIALOG OD //RESOURCE "mirecurso" DEFINE FONT OF NAME "times new roman" size 10,20 REDEFINE GET oGet var Cliente ID 101 of OD color (rgb(255,255,000),rgb(128,128,000)) REDEFINE GET oGet var nome ID 102 of OD font of REDEFINE GET oGet var cidade ID 103 of OD on change tone(1000,1) REDEFINE GET oGet var estado ID 104 of OD valid(tone(1000,1),.t.) REDEFINE GET oGet var telefone ID 105 of OD ACTIVATE DIALOG OD centered RETURN(NIL) programas usados CLIPPER 5.3,BLINKER 7, FIVEWIN 7
×
×
  • Create New...