mkyx
-
Posts
892 -
Joined
-
Last visited
-
Days Won
15
Posts posted by mkyx
-
-
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.
-
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()
endifif 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 FOCOif 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.
-
Sygecom poderia postar o exemplo em xharbour
Obrigado.
-
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.
-
Boa tarde,
O Macs acertou de cheia, inseri o .res, contendo o manifest e deu certo,
Obrigado.
-
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.
-
Gratidão, já vou testar.
-
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.
-
Pessoal, o Eroni, aqui do grupo, tem tbm, muito boa.
-
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.
-
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.
-
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.
-
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
-
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.
-
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()
USEreturn 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 := 5DEFINE 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, aRectASIZE( ::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 0CASE nKey == VK_DOWN
::oBrw:GoDown()
RETURN 0
ENDCASE
ENDIFIF nKey == VK_DELETE .or. nKey == VK_BACK
Super:KeyDown( nKey, nFlags )
::aData[1] := ::cText()
IF( EMPTY( ::aData[1] ), ::oWin:hide(), ::FillList() )
RETURN 0
ENDIFRETURN 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 )
-
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.
-
Bom dia, eu uso o alter table, sem problemas, com sqlrdd.
-
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.
-
utilizo a flexdocs com a classe do gilmer,
ja atualizei a flexdocs, e mesmo assim, continua o erro, solicitando essa tag indIntermed
-
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?
-
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
-
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í:
-
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.
-
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.
Baixar XML
in Programação
Posted
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