Jump to content
Fivewin Brasil

mkyx

Membros
  • Posts

    892
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by mkyx

  1. mkyx

    Baixar XML

    O exemplo abaixo é um inicio, se alguém puder dar sua contribuição, agradeço. O exemplo abre site e preenche com a chave da nfe informada. #include "fivewin.ch" function main() nChave:="352105......" consulta_xml(nchave) return .t. function consulta_xml(f_cchave) local oOle, oOleDoc := Array(2) if empty(f_cchave) msgstop("Chave em branco.","Atenção") return nil endif f_cchave = alltrim(f_cchave) oOle:= CreateObject("InternetExplorer.Application") oOle:Visible := .T. // Apresenta o Browser oOle:ToolBar := .F. // Desativa a barra de ferramentas oOle:StatusBar:= .f. // Desativa a barra de status oOle:MenuBar := .f. // desativa a barra de menu oOle:Navigate2("https://www.nfe.fazenda.gov.br/portal/consultaRecaptcha.aspx?tipoConsulta=resumo&tipoConteudo=d09fwabTnLk=") WHILE oOle:Busy syswait(.5) END oOle := oOle:Document() oOle:All:Item("ctl00$ContentPlaceHolder1$txtChaveAcessoResumo",0):Value:= f_cchave ** oOle:All:Item("recaptcha-anchor",0):Focus() ** oOle:All:Item("ctl00$ContentPlaceHolder1$btnConsultar",0):onClick() oOle:=Nil CursorArrow() SysRefresh() return nil
  2. Fiz umas alterações na função atualiza_xbr(), e permitiu digitar 600 itens, agora surgiu outro erro, mas esse vou analisar. function atualiza_xbr() oBrw0:refresh() if LEN(tab_item_1)=1 oBrw0:DESTROY() oBrw0:END() endif if LEN(tab_item_1)=1 oBrw0:=TXBrowse():New( oWnd ) oBrw0:nTop:=_l0*IF(IMP_CC="@",65,125)/768 oBrw0:nLeft:=15 oBrw0:nBottom:=_l0*IF(IMP_CC="@",500,555)/768 oBrw0:nRight:=if(_c0<1600,640,if(_c0=1600,750,950)) oBrw0:nMarqueeStyle := MARQSTYLE_HIGHLCELL oBrw0:setArray(tab_item_1) oBrw0:nColDividerStyle := 0 oBrw0:nRowDividerStyle := 0 oBrw0:nHeaderLines := 0 //--> Cabecalho em 2 Linhas. oBrw0:lAllowColSwapping :=.F. // Trocar Colunas oBrw0:lAllowRowSizing := .F. //--> Nao move as Linhas oBrw0:nRowHeight := 33 //--> Altura das Linhas do ListBox. oBrw0:lHScroll := .F. oBrw0:lVScroll := .F. oBrw0:lHeader := .F. oBrw0:lFooter := .F. oBrw0:lRecordSelector := .F. oBrw0:lFastEdit :=.t. oBrw0:nFreeze:=6 oBrw0:l2007:=.T. oBrw0:lFooter := .F. oBrw0:nHeaderLines := 1 oBrw0:lHeader := .T. oBrw0:oFont := OFNT441 endif IF LEN(tab_item_1)>0 .AND. oBrw0:nArrayAT>0 TRY oBrw0:bClrStd := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,1]="XX",{CLR_RED,rgb(208,254,197)},IF(TAB_ITEM_1[oBrw0:nArrayAT,1]="D",{CLR_RED,rgb(255,215,222)},IF(oBrw0:nArrayAT%2=0,{CLR_BLUE,RGB(200,253,232)},{CLR_BLUE,CLR_WHITE}))) } oBrw0:aCols[1]:cHeader := "?" oBrw0:aCols[1]:nWidth := LG_COL1 oBrw0:aCols[1]:nHeadStrAlign := AL_CENTER oBrw0:aCols[1]:nDataStrAlign := AL_CENTER CATCH END TRY IF BX_C_C="BX_CC" oBrw0:aCols[2]:cHeader := "DATA" ELSE oBrw0:aCols[2]:cHeader := "CÓDIGO" ENDIF oBrw0:aCols[2]:nWidth := LG_COL2 oBrw0:aCols[2]:nHeadStrAlign := AL_LEFT oBrw0:aCols[2]:nDataStrAlign := AL_LEFT CATCH END TRY oBrw0:aCols[3]:cHeader := "DESCRIÇÃO" oBrw0:aCols[3]:nWidth := LG_COL3 oBrw0:aCols[3]:nHeadStrAlign := AL_LEFT oBrw0:aCols[3]:nDataStrAlign := AL_LEFT CATCH END TRY oBrw0:aCols[4]:cHeader := "QUANTde" oBrw0:aCols[4]:nWidth := LG_COL4 oBrw0:aCols[4]:nHeadStrAlign := AL_RIGHT oBrw0:aCols[4]:nDataStrAlign := AL_RIGHT oBrw0:aCols[4]:bStrData := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,4]>0,IF(INT(TAB_ITEM_1[oBrw0:nArrayAT,4])=TAB_ITEM_1[oBrw0:nArrayAT,4],TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,4] , '@E 999,999'),TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,4] , '@E 999,999.999')),"") } oBrw0:aCols[4]:nEditType := EDIT_GET oBrw0:aCols[4]:BEDITVALUE := { ||TAB_ITEM_1[oBrw0:nArrayAT,4] } oBrw0:aCols[4]:CEDITPICTURE := "@E 999999.999" oBrw0:aCols[4]:bOnPostEdit := {|uOCOL,uVAL,uKEY| M1(@uOCOL,@uVAL,@uKEY) } CATCH ERROR END TRY IF TAB_ITEM_1[oBrw0:nArrayAT,5]>=0 .AND. LEN(TAB_ITEM_1)>0 if tpcx_p=" " .OR. BX_C_C="BX_CC" oBrw0:aCols[5]:cHeader := "UNITÁRIO" ELSE oBrw0:aCols[5]:cHeader := "À VISTA" ENDIF oBrw0:aCols[5]:nWidth := LG_COL5 oBrw0:aCols[5]:nHeadStrAlign := AL_RIGHT oBrw0:aCols[5]:nDataStrAlign := AL_RIGHT IF TAB_ITEM_1[oBrw0:nArrayAT,5]>=0 .AND. LEN(TAB_ITEM_1)>0 oBrw0:aCols[5]:bStrData := {|| IF(TAB_ITEM_1[oBrw0:nArrayAT,5]>0,TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,5] , '@E 999,999.99'),"") } oBrw0:aCols[5]:nEditType := EDIT_GET oBrw0:aCols[5]:BEDITVALUE := { ||TAB_ITEM_1[oBrw0:nArrayAT,5] } oBrw0:aCols[5]:CEDITPICTURE := "@E 999999.99" oBrw0:aCols[5]:bOnPostEdit := {|uOCOL5,uVAL5,uKEY5| M2(@uOCOL5,@uVAL5,@uKEY5) } ENDIF ENDIF CATCH ERROR END TRY if tpcx_p=" " .OR. BX_C_C="BX_CC" IF TAB_ITEM_1[oBrw0:nArrayAT,6]>=0 .AND. LEN(TAB_ITEM_1)>0 oBrw0:aCols[6]:cHeader := "TOTAL" oBrw0:aCols[6]:nWidth := LG_COL6 oBrw0:aCols[6]:nHeadStrAlign := AL_RIGHT oBrw0:aCols[6]:nDataStrAlign := AL_RIGHT oBrw0:aCols[6]:bStrData := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,12]="XX" .AND. TAB_ITEM_1[oBrw0:nArrayAT,6]>0 .AND. BX_C_C="BX_CC","("+ALLTRIM(TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,6] , '@E 999,999.99'))+")", IF(TAB_ITEM_1[oBrw0:nArrayAT,6]>0, TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,6] , '@E 999,999.99'),"")) } ENDIF ELSE IF TAB_ITEM_1[oBrw0:nArrayAT,8]>=0 .AND. LEN(TAB_ITEM_1)>0 //TAB_ITEM_1[oBrw0:nArrayAT,11] oBrw0:aCols[6]:cHeader := "A PRAZO" oBrw0:aCols[6]:nWidth := LG_COL5 oBrw0:aCols[6]:nHeadStrAlign := AL_RIGHT oBrw0:aCols[6]:nDataStrAlign := AL_RIGHT IF TAB_ITEM_1[oBrw0:nArrayAT,8]>0 .AND. LEN(TAB_ITEM_1)>0 oBrw0:aCols[6]:bStrData := {|| IF(TAB_ITEM_1[oBrw0:nArrayAT,8]>0,TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,8] , '@E 999,999.99'),"") } oBrw0:aCols[6]:nEditType := EDIT_GET oBrw0:aCols[6]:BEDITVALUE := { ||TAB_ITEM_1[oBrw0:nArrayAT,8] } oBrw0:aCols[6]:CEDITPICTURE := "@E 999999.99" oBrw0:aCols[6]:bOnPostEdit := {|uOCOL6,uVAL6,uKEY6| M21(@uOCOL6,@uVAL6,@uKEY6) } ENDIF ENDIF ENDIF CATCH ERROR END ENDIF if LEN(tab_item_1)=1 oBrw0:bClrSel := {|| {RGB(0,0,128),RGB(255,255,255)} } // COR SELECIONADA QUANDO SAI DE FOCO oBrw0:CreateFromCode() oBrw0:bKeydown:={|nkey|_obrw0(nkey,OBRW0:nArrayAt)} endif oBrw0:GOBOTTOM() oBrw0:REFRESH() RETURN .T.
  3. Boa noite pessoal, estou com o seguinte problema: Eu estou usando uma array: tab_item_1, para armazenar e exibir os itens digitados na tela de venda. Ao acessar a tela de venda, é exibido uma janela xbrowse sem colunas, totalmente em branco, que ficou show. a medida que vai lendo os código de barras, para exibir o array com os dados dos itens digitados, criei a função ATUALIZA_XBR(), que cria as 6 colunas no xbrowse e dá um refresh para atualizar a tela. Mas, para criar as colunas, dentro da função tive que analisar o tamanho do array, e quando o array tem apenas uma linha, que é o momento que se passa o primeiro item, o xbrowse é reiniciado e depois disso não mais é reiniciado, só atualizado as colunas. function atualiza_xbr() if LEN(tab_item_1)=1 // os 2 comandos abaixo é para recriar o xbrowse com colunas, porque antes disso, não tinha colunas oBrw0:DESTROY() oBrw0:END() endif if LEN(tab_item_1)=1 // recria o xbrowse, mas só quando é digitado o primeiro produto, depois disso, não recria mais oBrw0:=TXBrowse():New( oWnd ) endif oBrw0:nTop:=05 oBrw0:nLeft:=05 oBrw0:nBottom:=800 oBrw0:nRight:=1000 oBrw0:nMarqueeStyle := MARQSTYLE_HIGHLCELL oBrw0:setArray(tab_item_1) oBrw0:nColDividerStyle := 0 oBrw0:nRowDividerStyle := 0 oBrw0:nHeaderLines := 0 //--> Cabecalho em 2 Linhas. oBrw0:lAllowColSwapping :=.F. // Trocar Colunas oBrw0:lAllowRowSizing := .F. //--> Nao move as Linhas oBrw0:nRowHeight := 33 //--> Altura das Linhas do ListBox. oBrw0:lHScroll := .F. oBrw0:lVScroll := .F. oBrw0:lHeader := .F. oBrw0:lFooter := .F. oBrw0:lRecordSelector := .F. oBrw0:lFastEdit :=.t. oBrw0:nFreeze:=6 oBrw0:l2007:=.T. oBrw0:lFooter := .F. IF LEN(tab_item_1)>0 .AND. oBrw0:nArrayAT>0 oBrw0:nHeaderLines := 1 oBrw0:lHeader := .T. TRY oBrw0:bClrStd := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,1]="XX",{CLR_RED,rgb(208,254,197)},IF(TAB_ITEM_1[oBrw0:nArrayAT,1]="D",{CLR_RED,rgb(255,215,222)},IF(oBrw0:nArrayAT%2=0,{CLR_BLUE,RGB(200,253,232)},{CLR_BLUE,CLR_WHITE}))) } oBrw0:aCols[1]:cHeader := "?" oBrw0:aCols[1]:nWidth := LG_COL1 oBrw0:aCols[1]:nHeadStrAlign := AL_CENTER oBrw0:aCols[1]:nDataStrAlign := AL_CENTER CATCH END TRY oBrw0:aCols[2]:cHeader := "CÓDIGO" oBrw0:aCols[2]:nWidth := LG_COL2 oBrw0:aCols[2]:nHeadStrAlign := AL_LEFT oBrw0:aCols[2]:nDataStrAlign := AL_LEFT CATCH END TRY oBrw0:aCols[3]:cHeader := "DESCRIÇÃO" oBrw0:aCols[3]:nWidth := LG_COL3 oBrw0:aCols[3]:nHeadStrAlign := AL_LEFT oBrw0:aCols[3]:nDataStrAlign := AL_LEFT CATCH END TRY oBrw0:aCols[4]:cHeader := "QUANTde" oBrw0:aCols[4]:nWidth := LG_COL4 oBrw0:aCols[4]:nHeadStrAlign := AL_RIGHT oBrw0:aCols[4]:nDataStrAlign := AL_RIGHT oBrw0:aCols[4]:bStrData := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,4]>0,IF(INT(TAB_ITEM_1[oBrw0:nArrayAT,4])=TAB_ITEM_1[oBrw0:nArrayAT,4],TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,4] , '@E 999,999'),TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,4] , '@E 999,999.999')),"") } oBrw0:aCols[4]:nEditType := EDIT_GET oBrw0:aCols[4]:BEDITVALUE := { ||TAB_ITEM_1[oBrw0:nArrayAT,4] } oBrw0:aCols[4]:CEDITPICTURE := "@E 999999.999" oBrw0:aCols[4]:bOnPostEdit := {|uOCOL,uVAL,uKEY| M1(@uOCOL,@uVAL,@uKEY) } CATCH ERROR END TRY IF TAB_ITEM_1[oBrw0:nArrayAT,5]>=0 .AND. LEN(TAB_ITEM_1)>0 oBrw0:aCols[5]:cHeader := "UNITÁRIO" oBrw0:aCols[5]:nWidth := LG_COL5 oBrw0:aCols[5]:nHeadStrAlign := AL_RIGHT oBrw0:aCols[5]:nDataStrAlign := AL_RIGHT IF TAB_ITEM_1[oBrw0:nArrayAT,5]>=0 .AND. LEN(TAB_ITEM_1)>0 oBrw0:aCols[5]:bStrData := {|| IF(TAB_ITEM_1[oBrw0:nArrayAT,5]>0,TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,5] , '@E 999,999.99'),"") } oBrw0:aCols[5]:nEditType := EDIT_GET oBrw0:aCols[5]:BEDITVALUE := { ||TAB_ITEM_1[oBrw0:nArrayAT,5] } oBrw0:aCols[5]:CEDITPICTURE := "@E 999999.99" oBrw0:aCols[5]:bOnPostEdit := {|uOCOL5,uVAL5,uKEY5| M2(@uOCOL5,@uVAL5,@uKEY5) } ENDIF ENDIF CATCH ERROR END TRY IF TAB_ITEM_1[oBrw0:nArrayAT,6]>=0 .AND. LEN(TAB_ITEM_1)>0 oBrw0:aCols[6]:cHeader := "TOTAL" oBrw0:aCols[6]:nWidth := LG_COL6 oBrw0:aCols[6]:nHeadStrAlign := AL_RIGHT oBrw0:aCols[6]:nDataStrAlign := AL_RIGHT oBrw0:aCols[6]:bStrData := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,12]="XX" .AND. TAB_ITEM_1[oBrw0:nArrayAT,6]>0 .AND. BX_C_C="BX_CC","("+ALLTRIM(TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,6] , '@E 999,999.99'))+")", IF(TAB_ITEM_1[oBrw0:nArrayAT,6]>0, TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,6] , '@E 999,999.99'),"")) } ENDIF CATCH ERROR END ENDIF oBrw0:bClrSel := {|| {RGB(0,0,128),RGB(255,255,255)} } // COR SELECIONADA QUANDO SAI DE FOCO if LEN(tab_item_1)=1 // só executa o comando abaixo, quando o array tem apenas uma linha oBrw0:CreateFromCode() endif oBrw0:bKeydown:={|nkey|_obrw0(nkey,OBRW0:nArrayAt)} oBrw0:GOBOTTOM() oBrw0:REFRESH() RETURN .T. Durante a digitação dos itens, quando chega acima de 200 produtos digitados, o programa se fecha, e dentro do arquivo de erro ERROR.LOG, contém a mensagem abaixo: Application =========== Path and name: D:\wincom\wincom.exe (32 bits) Size: 7,054,848 bytes Time from start: 0 hours 3 mins 19 secs Error occurred at: 06/09/2021, 00:22:37 Error description: Error FiveWin/6 Cannot create window or control: Class: TBTNBMP Caption: System Error: O processo atual usou todos os identificadores de sistema permitidos para objetos do Gerenciador do Windows. Stack Calls =========== Called from: WINDOW.PRG => WNDCREATEERROR(0) Called from: WINDOW.PRG => TBTNBMP:CREATE(0) Called from: BTNBMP.PRG => TBTNBMP:NEW(0) Called from: XBROWSE.PRG => TXBRWCOLUMN:CREATEBUTTONS(4405) Called from: XBROWSE.PRG => TXBRWCOLUMN:ADJUST(3506) Called from: XBROWSE.PRG => TXBROWSE:SETARRAY(2597) Called from: WINCOM.PRG => ATUALIZA_XBR(7239) Called from: WINCOM.PRG => _LERCOD1(5715) Called from: WINCOM.PRG => (b)AD_CAIXA(1691) Called from: TGET.PRG => CORGET:LVALID(0) Called from: CONTROL.PRG => CORGET:FWLOSTFOCUS(0) Called from: CONTROL.PRG => TCONTROL:HANDLEEVENT(0) Called from: TGET.PRG => CORGET:HANDLEEVENT(0) Called from: WINDOW.PRG => _FWH(0) Called from: => SYSREFRESH(0) Called from: CONTROL.PRG => TCONTROL:KEYCHAR(0) Called from: TGET.PRG => CORGET:KEYCHAR(0) Called from: => TWINDOW:HANDLEEVENT(0) Called from: CONTROL.PRG => TCONTROL:HANDLEEVENT(0) Called from: TGET.PRG => CORGET:HANDLEEVENT(0) Called from: WINDOW.PRG => _FWH(0) Called from: => WINRUN(0) Called from: WINDOW.PRG => TWINDOW:ACTIVATE(0) Called from: WINCOM.PRG => MAIN(948) Esse erro: System Error: O processo atual usou todos os identificadores de sistema permitidos para objetos do Gerenciador do Windows. é causado por causa da classe TBTNBMP, que ultrapassou o limite de apresentação ou refresh(). Alguém sabe como resolver esse erro, para poder digitar 500 itens, se for preciso ? Obrigado a todos que puderem me ajudar.
  4. Sygecom poderia postar o exemplo em xharbour Obrigado.
  5. Boa noite a todos, Pessoal, criei um xbrowse com array no módulo de vendas, com as colunas: código, descrição, unidade, quantidade, unitário e total até aqui blz, mas durante o uso, quando se digita mais de 200 itens, trava e fecha o programa automaticamente, gravando o seguinte erro, no error.log: Application =========== Path and name: C:\WINCOM\wincom.exe (32 bits) Size: 7,012,352 bytes Time from start: 0 hours 3 mins 36 secs Error occurred at: 16/07/2021, 01:41:38 Error description: Error FiveWin/6 Cannot create window or control: Class: TBTNBMP Caption: System Error: O processo atual usou todos os identificadores de sistema permitidos para objetos do Gerenciador do Windows. Stack Calls =========== Called from: window.prg => WNDCREATEERROR(699) Called from: window.prg => TBTNBMP:CREATE(680) Called from: BTNBMP.PRG => TBTNBMP:NEW(0) Called from: XBROWSE.PRG => TXBRWCOLUMN:CREATEBUTTONS(4411) Called from: XBROWSE.PRG => TXBRWCOLUMN:ADJUST(3506) Called from: XBROWSE.PRG => TXBROWSE:ADJUST(609) Called from: XBROWSE.PRG => TXBROWSE:INITIATE(593) Called from: XBROWSE.PRG => TXBROWSE:CREATEFROMCODE(531) Called from: WINCOM.PRG => ATUALIZA_XBR(7177) Called from: WINCOM.PRG => _LERCOD1(6132) Called from: WINCOM.PRG => (b)AD_CAIXA(2271) Called from: TGET.PRG => CORGET:LVALID(0) Called from: CONTROL.PRG => CORGET:FWLOSTFOCUS(0) Called from: CONTROL.PRG => TCONTROL:HANDLEEVENT(0) Called from: TGET.PRG => CORGET:HANDLEEVENT(0) Called from: window.prg => _FWH(3258) Called from: => SYSREFRESH(0) Called from: CONTROL.PRG => TCONTROL:KEYCHAR(0) Called from: TGET.PRG => CORGET:KEYCHAR(0) Called from: => TWINDOW:HANDLEEVENT(0) Called from: CONTROL.PRG => TCONTROL:HANDLEEVENT(0) Called from: TGET.PRG => CORGET:HANDLEEVENT(0) Called from: window.prg => _FWH(3258) Called from: => WINRUN(0) Called from: window.prg => TWINDOW:ACTIVATE(931) Called from: WINCOM.PRG => MAIN(900) Se alguém já passou por isso, como resolver? Gratidão a todos.
  6. Boa tarde, O Macs acertou de cheia, inseri o .res, contendo o manifest e deu certo, Obrigado.
  7. Boa noite, galera fivewinners Alguém sabe como deixar os cantos arredondados do comando @ l1,c1 GROUP ig TO l2,c2 OF ODG PIXEL Gratidão a todos.
  8. Boa tarde, a todos Em que ponto do xml da nfe, abaixo de qual grupo, eu insiro as informações abaixo, referente às informações do intermediário? <infIntermed> <CNPJ>00000000000191</CNPJ> <idCadIntTran>vendtudo</idCadIntTran> </infIntermed> Muito grato, a todos.
  9. mkyx

    e-Social

    Pessoal, o Eroni, aqui do grupo, tem tbm, muito boa.
  10. Pessoal, achei o erro. Eu não informei o evento s-1040, logo, a tag <codFuncao> está vinculada a essa tabela de cargos/funções em comissão. Eliminei essa tag, do evento s-2200, e deu certo. Só tem um coisa estranha, eu fiz duas vezes a qualificação dos funcionários e no retorno da consulta do evento s-2200, vem uma resposta com advertência: 202-Sucesso com advertencia descrição da ocorrência: Validacao cadastral do NIS nao realizada. e na verdade é falso, porque eu fiz duas vezes.
  11. Boa tarde, fivewinners Alguém que já está trabalhando com o esocial, poderia tirar uma dúvida? Eu enviei os dados do empregador e tabelas e coloquei como data inicial de validade a própria data de inicio de vigência das tabelas no esocial. Ex.: 2019-01 e a data final de vigência não informei, para caracterizar que não tem data de validade, é eterna, enquanto a empresa existir. Quando enviei um funcionário com registro em 02-2021, veio a mensagem não existe tabela de horário para o mês 02-2021, não existe tabela de cbo válida para 02-2021. não entendi nada. Será que tem que ficar enviando todo mês as tabelas com data de vigência dentro do mês? para serem processados? Obrigado a todos que puderem me auxiliar.
  12. fiz assim: APCODE:="UPDATE ESTOQUE SET DESCRICAO="+CHR(34)+ALLTRIM(DESC)+CHR(34)+" WHERE CODIGO="+CHR(34)+CODP+CHR(34)+";" OSQL:EXEC(APCODE ) oSql:Commit() SR_dbRefresh() oLSTB_0:upstable() oLSTB_0:REFRESH() mas, não atualiza a tabela na tela, só atualiza a tabela dentro do ,mysql. se eu sair do módulo e acessar de novo, então, está lá, as alterações, mas não é isso que eu busco. O que eu quero, é que quando executar o update, e o refresh no listbox ou xbrowse, os dados do BD, apareça na tela, automaticamente.
  13. Bom dia pessoal abençoado, Toda vez que eu executo os camando insert, update e delete no bd do mysql, para exibir na tabela, eu tenho que executar um dbUseArea de novo, senão continua com os dados antigos, eu uso o SQLRDD. Tem como deixar essa atualização da tabela automaticamente, depois do insert, update e delete, como é no dbf? Obrigado a todos que puderem ajudar. Jose Adenildo, apelido Pompeo (Aqui no forum está como mkyx, e tentei alterar para Pompeo, mas, não consegui). Guaratinguetá, SP Fivewin, xHarbour, SQLRDD
  14. Os bmps são figuras normais coloridas, com fundo transparente segue o fonte abaixo: . . . DEFINE BUTTONBAR oBar SIZE 60,60 3D LOOK OF oWnd 2007 DEFINE BUTTON OF oBar FILE "FIRMAS.BMP" PROMPT "Firmas" TOOLTIP "Ficha da Firma" top NOBORDER ACTION AD_CADFIR(0) ON DROP AD_CADFIR(0) DEFINE BUTTON OF oBar FILE "FUNC.BMP" PROMPT "Func" TOOLTIP "Ficha de funcionário" top NOBORDER ACTION AD_CADFUNC() DEFINE BUTTON OF oBar FILE "INSS.BMP" PROMPT "Inss" TOOLTIP "Tabela de Inss" top NOBORDER group ACTION AD_INSS() DEFINE BUTTON OF oBar FILE "IRENDA.BMP" PROMPT "Irenda" TOOLTIP "Tabela de Imposto de Renda" top NOBORDER ACTION AD_IR() DEFINE BUTTON OF oBar FILE "SALFAM.BMP" PROMPT "Sal.Fam" TOOLTIP "Tabela de Imposto de Salário Família" top NOBORDER action ad_cadfam() DEFINE BUTTON OF oBar FILE "LANCA.BMP" PROMPT "Lançtos" TOOLTIP "Lançamentos de Eventos não Automáticos na Folha" top NOBORDER group ACTION AD_LANCTO("FOL") DEFINE BUTTON OF oBar FILE "V.BMP" PROMPT "Vale" TOOLTIP "Emissão de Vale Antecipação" top NOBORDER action ad_vale() DEFINE BUTTON OF oBar FILE "R.BMP" PROMPT "Recibos" TOOLTIP "Emissão de Recibos de Pagamentos" top NOBORDER menu MENUHOLL() ON DROP MENURES() DEFINE BUTTON OF oBar FILE "FORM.BMP" PROMPT "Resumo" TOOLTIP "Emissão do Resumo da Folha de Pagamento" top NOBORDER menu MENURES() ACTION MENURES() ON DROP MENURES() DEFINE BUTTON OF oBar FILE "GPS.BMP" PROMPT "Gps" TOOLTIP "Emissão da guia de GPS" top NOBORDER menu MENUGPS() DEFINE BUTTON OF oBar FILE "FERIAS.BMP" PROMPT "Férias" TOOLTIP "Emissão do Recibo de Férias" top NOBORDER ACTION AD_FERIAS() DEFINE BUTTON OF oBar FILE "RESCISAO.BMP" PROMPT "Rescisão" TOOLTIP "Emissão da Rescisão do Funcionário" top NOBORDER ACTION AD_RESC() DEFINE BUTTON OF oBar FILE "DISCO.BMP" PROMPT "G.D.M." TOOLTIP "Geração de Discos Magnéticos (FGTS, CAGED, RAIS, DIRF, NIS)" top NOBORDER menu buildpopup() DEFINE BUTTON OF oBar FILE "E_SOCIAL.BMP" TOOLTIP "Gerar os eventos do e-Social" top NOBORDER menu gre_social() DEFINE BUTTON OF oBar FILE "user.bmp" PROMPT "Usuários" TOOLTIP "Troca de Usuários" top NOBORDER group DEFINE BUTTON OF oBar FILE "certif1.bmp" PROMPT "Certif" TOOLTIP "Tabela de Cerficados Disponíveis" top NOBORDER group action ver_certif() DEFINE BUTTON OF oBar FILE "saida.bmp" PROMPT "Sair" TOOLTIP "Sair do programa" top NOBORDER action oWnd:end() group Espero ter ajudado.
  15. Com a rotina abaixo que peguei aqui no forum estou fazendo adaptações que vão ser úteis. #Include "FiveWin.Ch" #include "corget.ch" #include "xbrowse.ch" ANNOUNCE RDDSYS REQUEST OrdKeyNo, OrdKeyCount, OrdKeyGoto REQUEST DBFCDX, DBFDBT Function Main() Local oDlg Local oGet, oGet1, oCb local cVar := space( 60 ) local a := {} Set Date To British Set 3DLook On Set Exclusive OFF Set Delete On Set Century On set multiple on SETMULTIPLE("ON") SetHandleCount(150) set epoch to 1970 request DBFCDX rddsetdefault("DBFCDX") select 1 use estoque shared alias "arq_esto" via "dbfcdx" arq_esto->(dbsetorder(3)) arq_esto -> ( DBEVAL( {|| AADD( a, arq_esto->descricao ) } ) ) DEFINE DIALOG oDlg from 0,0 to 400,400 pixel oGet := tListGet():new(15,15,{ | u | If( PCount()==0, cVar, cVar:= u ) },oDlg,120,12,"@!",,,,,,,.T.) oGet:aSource := a oGet:bSearch := {|i,e| AT( i, UPPER(e) ) > 0 } oGet:cSource := 'ARRAY' oGet:lenDisplay := 20 ACTIVATE DIALOG oDlg VALID SAIR() USE return nil FUNCTION SAIR() USE DBCLOSEALL() RETURN .T. //--------------------------------------------------------------- CLASS tListGet FROM tGet DATA oBrw, oWin, aData, lenBuffer, bSearch, aSource, cSource, cField, cAlias, lenDisplay METHOD new() CONSTRUCTOR METHOD redefine() CONSTRUCTOR METHOD FillList() METHOD Initiate() METHOD keyDown() METHOD keychar() ENDCLASS //--------------------------------------------------------------- METHOD New( nRow, nCol, bSetGet, oWnd, nWidth, nHeight, cPict, bValid,; nClrFore, nClrBack, oFont, lDesign, oCursor, lPixel, cMsg,; lUpdate, bWhen, lCenter, lRight, bChanged, lReadOnly,; lPassword, lNoBorder, nHelpId, lSpinner,; bUp, bDown, bMin, bMax, bAction, cBmpName, cVarName, cCueText ) CLASS tListGet //--------------------------------------------------------------- RETURN ::super:new( nRow, nCol, bSetGet, oWnd, nWidth, nHeight, cPict, bValid,; nClrFore, nClrBack, oFont, lDesign, oCursor, lPixel, cMsg,; lUpdate, bWhen, lCenter, lRight, bChanged, lReadOnly,; lPassword, lNoBorder, nHelpId, lSpinner,; bUp, bDown, bMin, bMax, bAction, cBmpName, cVarName, cCueText ) //--------------------------------------------------------------- METHOD ReDefine( nId, bSetGet, oWnd, nHelpId, cPict, bValid, nClrFore,; nClrBack, oFont, oCursor, cMsg, lUpdate, bWhen, bChanged,; lReadOnly, lSpinner, bUp, bDown, bMin, bMax, bAction, cBmpName,; cVarName, cCueText ) CLASS tListGet //--------------------------------------------------------------- RETURN ::super:ReDefine( nId, bSetGet, oWnd, nHelpId, cPict, bValid, nClrFore,; nClrBack, oFont, oCursor, cMsg, lUpdate, bWhen, bChanged,; lReadOnly, lSpinner, bUp, bDown, bMin, bMax, bAction, cBmpName,; cVarName, cCueText ) //--------------------------------------------------------------- METHOD Initiate( hDlg ) CLASS TListGet //--------------------------------------------------------------- LOCAL oSelf := SELF, aRect ::super:Initiate( hDlg ) ::lenBuffer := LEN( cValToChar( Eval( ::bSetGet ) ) ) ::aData := ARRAY(1) DEFAULT ::lenDisplay := 5 DEFINE DIALOG ::oWin OF oSelf:oWnd FROM 100, 100 TO 100, 100 + ::nWidth PIXEL STYLE nOR( WS_CHILD, WS_POPUP, WS_VISIBLE ) @ 0, 0 XBROWSE ::oBrw OF oSelf:oWin ARRAY oSelf:aData COLUMNS 1 SIZEs ::nWidth ::oBrw:lHeader := .F. ::oBrw:lRecordSelector := .F. ::oBrw:lFlatStyle := .T. ::oBrw:nStyle -= WS_BORDER ::oWin:oClient := ::oBrw ::oBrw:bChange := {|| ::cText( PADR( ::aData[ ::oBrw:nArrayAt ], ::lenBuffer, ' ' ) ), ::refresh(), ::SetPos( LEN( ALLTRIM( ::aData[ ::oBrw:nArrayAt ] ) ) + 1 ), ::setFocus() } ::oBrw:bLClicked := {|| ::oWin:hide() } ::oBrw:lHScroll := .F. ::oBrw:lVScroll := .F. ::oBrw:createFromCode() ::bPostKey := {|oGet, cBuffer| ; IF( EMPTY( cBuffer ), ::oWin:hide(), NIL ),; oGet:aData[1] := cBuffer, ; oGet:Assign(), ; ::FillList() } ACTIVATE DIALOG oSelf:oWin NOWAIT ON INIT oSelf:oWin:hide() ::oWnd:bMoved := {|| ::oWin:hide() } return nil //--------------------------------------------------------------- METHOD FillList() CLASS TListGet //--------------------------------------------------------------- LOCAL i := 1, aRect ASIZE( ::aData, 1 ) DO CASE CASE ::cSource = 'ARRAY' DO WHILE LEN( ::aData ) < ::lenDisplay .AND. i <= LEN( ::aSource ) IF EVAL( ::bSearch, ALLTRIM(::aData[1]), ::aSource ) AADD( ::aData, ::aSource ) ENDIF i++ ENDDO ::oWin:SetSize( ::oWin:nWidth, ( LEN( ::aData ) ) * GetTextHeight( ::hWnd ) + LEN( ::aData ) ) aRect := getWndRect( ::hWnd ) ::oWin:move( aRect[1] + ::nHeight + 3, aRect[2] ) ::oWin:show() CASE ::cSource = 'DBF' (::cAlias) -> ( DBGOTOP() ) DO WHILE LEN( ::aData ) < ::lenDisplay .AND. ! (::cAlias)-> ( EOF() ) IF EVAL( ::bSearch, ALLTRIM(::aData[1]), (::cAlias)-> ( fieldGet( fieldPos( ::cField ) ) ) ) AADD( ::aData, (::cAlias)-> ( fieldGet( fieldPos( ::cField ) ) ) ) ENDIF i++ ENDDO ENDCASE ::oBrw:refresh() RETURN NIL //--------------------------------------------------------------- METHOD KeyDown( nKey, nFlags ) CLASS TListGet //--------------------------------------------------------------- IF ::oWin:lVisible DO CASE CASE nKey == VK_UP ::oBrw:GoUp() RETURN 0 CASE nKey == VK_DOWN ::oBrw:GoDown() RETURN 0 ENDCASE ENDIF IF nKey == VK_DELETE .or. nKey == VK_BACK Super:KeyDown( nKey, nFlags ) ::aData[1] := ::cText() IF( EMPTY( ::aData[1] ), ::oWin:hide(), ::FillList() ) RETURN 0 ENDIF RETURN Super:KeyDown( nKey, nFlags ) //--------------------------------------------------------------- METHOD keychar( nKey, nFlags ) CLASS TListGet //--------------------------------------------------------------- IF nKey == VK_RETURN .AND. ::oWin:lVisible ::oWin:hide() ENDIF RETURN super:keychar( nkey, nFlags )
  16. Bom dia, FiveWinners Alguém já conseguiu concluir uma busca incremental, semelhante ao que acontece quando estamos digitando no google.com.br, para agilizar a digitação e a localização de um item? Gratidão a todos por contribuir nesse grupo.
  17. Bom dia, eu uso o alter table, sem problemas, com sqlrdd.
  18. Boa tarde, O erro só ocorreu no dia em que postei o erro aqui e no dia seguinte, agora vou ao normal. Vamos ver até quando. Obrigado a todos.
  19. utilizo a flexdocs com a classe do gilmer, ja atualizei a flexdocs, e mesmo assim, continua o erro, solicitando essa tag indIntermed
  20. Bom dia, Não estou conseguindo emitir nfce, porque está solicitando a tag indIntermed uso o indpres igual 1 Alguém está tendo o mesmo caso?
  21. Pode fazer assim: Local aCoors := GetCoors( FindWindow("Shell_TrayWnd","") )DEFINE DIALOG oDlg FROM 0,0 TO aCoors[1]-30, aCoors[4]-7 PIXEL TITLE "TODA LA PANTALLA" ou assim: nCol:=GetSysMetrics(0) nLin:=GetSysMetrics(1) DEFINE DIALOG oDlg FROM 0,0 TO nLin-20,nCol-30 title "Título do diálogo" PIXEL
  22. mkyx

    Fivedroid

    Tem também essa opção do Alexander Kresin, não sei em que pé está, se vai continuar ou se já parou. Harbour For Android Dá uma olhada aí: http://www.kresin.ru/en/hdroid.html
  23. Resolvido, assim: if ASCAN(TAB_ITEM_1, {|aVal| aVal[3] == "Não há Valores na Conta Corrente"})>0 ? "achouuuuu!" endif TAB_ITEM_1 é uma matrz com 2 ou mais colunas, no meu caso é com 21 colunas. aVal é uma matriz (não criada manualmente) e aVal[3] é uma coluna da matriz, a ser analisada. Para quem precisar, está aí a dica. Gratidão.
  24. Bom dia, Tenho uma matriz com 21 colunas: tab_item_1:={{"","","",0,0,0,"",0,0,0,0,"",0,"","",0,0,"",0,0,0}} Como faço para localizar uma informação que está na terceira coluna que é uma descrição de um produto ou uma frase. exemplo: localizar na terceira coluna da matriz: TAB_ITEM_1, a frase: "Não há Valores na Conta Corrente" Obrigado.
×
×
  • Create New...