Eroni
-
Posts
561 -
Joined
-
Last visited
-
Days Won
6
Posts posted by Eroni
-
-
Olá, Eroni.
Dá para disponibilizar seus exemplos do usa dessa DLL?
E a também, sem querer abusar.
Consegui ativar o ECF (Emulador) mas a Leitura X não vai. Alguém pode dar uma ajudinha aí?
*--------------------( ECF via ACBrFramework32.dll )---------------------------* FUNCTION TestACBrFrwrk() aModelo := ; {; "01. NaoFiscal",; "02. Bematech",; "03. Sweda",; "04. Daruma",; "05. Schalter",; "06. Mecaf",; "07. Yanco",; "08. DataRegis",; "09. Urano",; "10. ICash",; "11. Quattro",; "12. FiscNET",; "13. Epson",; "14. NCR",; "15. SwedaSTX"; } cModelo := MsgSelect(aModelo, "02. Bematech", "Selecione o modelo", "&Ok", "Cancelar") cPorta := "COM4" IF ! MsgGet("Porta","Porta",@cPorta) RETURN NIL ENDIF xdll := LoadLibrary("ACBrFramework32.dll") nHandle := 0 ? "Cria o Handle do ECF" ret := ECFCreate(@nHandle) CheckResult(ret, nHandle) ? "Informa o modelo do ecf" nModelo := ALLTRIM(STR(VAL(LEFT(cModelo, 2)))) ret := ECFSetModelo(nHandle, nModelo) CheckResult(ret, nHandle) ? "Obtem o modelo configurado" buffer := ECFGetModelo(nHandle) SysRefresh() MsgAlert("Modelo: "+cValToChar(buffer)) ? "Define a porta de comunicação" ret := ECFSetPorta(nHandle, cPorta) CheckResult(ret, nHandle) ? "Obtem a porta de comunicação definida" buff := SPACE(100) ret = ECFGetPorta(nHandle, @buff, 100) CheckResult(ret, nHandle) ? "Verivicar se ECF está ativo" ret := ECFGetAtivo(nHandle) CheckResult(ret, nHandle) ? "Avtivar o ECF" ECFAtivar(nHandle) ? "Verivicar se ECF está ativo" ret := ECFGetAtivo(nHandle) CheckResult(ret, nHandle) ? "Emitir leitura X" ret := ECFLeituraX(nHandle) CheckResult(ret, nHandle) ? "Desativar o ECF" ret := ECFDestroy(@nHandle) CheckResult(ret, nHandle) FreeLib32(xdll) RETURN NIL STATIC FUNCTION CheckResult(ret, nHandle) LOCAL buff := SPACE(100) * ECFGetUltErro(nHandle, @buff, 100) SysRefresh() MsgInfo("Retorno: "+cValToChar(ret), "Aviso") RETURN NIL xdll:=LoadLibrary("ACBrFramework32.dll") DLL32 FUNCTION ECFCreate( @nHandle AS PTR ) AS 7 PASCAL FROM "ECF_Create" LIB xdll DLL32 FUNCTION ECFGetUltErro( ecfHandle AS PTR, @buffer AS 8, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetUltimoErro" LIB xdll DLL32 FUNCTION ECFSetModelo( nHandle AS PTR, cModelo AS STRING ) AS LONG PASCAL FROM "ECF_SetModelo" LIB xdll DLL32 FUNCTION ECFGetModelo( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_GetModelo" LIB xdll DLL32 FUNCTION ECFGetModStr( nHandle AS PTR, @buffer AS STRING, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetModeloStr" LIB xdll DLL32 FUNCTION ECFSetPorta( nHandle AS PTR, porta AS STRING ) AS LONG PASCAL FROM "ECF_SetPorta" LIB xdll DLL32 FUNCTION ECFGetPorta( nHandle AS PTR, @buffer AS STRING, bufferLen AS STRING ) AS LONG PASCAL FROM "ECF_GetPorta" LIB xdll DLL32 FUNCTION ECFGetAtivo( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_GetAtivo" LIB xdll DLL32 FUNCTION ECFAtivar( nHandle AS PTR ) AS LONG PASCAL FROM "ECF_Ativar" LIB xdll DLL32 FUNCTION ECFLeituraX( nHandle AS PTR ) AS 7 PASCAL FROM "ECF_LeituraX" LIB xdll DLL32 FUNCTION ECFDestroy( @nHandle AS PTR ) AS 7 PASCAL FROM "ECF_Destroy" LIB xdll freelibrary(xdll)
*----------------------( Função MsgSelect )-----------------------------------* function MsgSelect( aItems, cValue, cTitle, cTitBt1, cTitBt2 ) LOCAL oDlg, lOk, cDescr, nScan DEFAULT cTitle := "Selecione" DEFAULT cTitBt1 := "&Ok" DEFAULT cTitBt2 := "Ca&ncelar" DEFAULT cValue := aItems[1] nScan := 1 cDescr := SPACE(40) lOk := .F. aItems := ASORT(aItems) DEFINE DIALOG oDlg FROM 5,10 TO 27, 54 TITLE cTitle @ 01,02 GET cDescr SIZE 145,10 OF oDlg ; ON CHANGE ( ::Assign() ,; cGet := SubStr( cDescr, 1, ::nPos - 1 ) ,; AEVAL(aItems ,{|cData,nItem| IIF( LEFT(cData,LEN(cGet)) = cGet, nScan:=nItem, nScan:=nScan)}),; oList:Select(nScan) ) @ 02,02 LISTBOX oList VAR cValue ITEMS aItems SIZE 145, 100 OF oDlg @ 08,07 BUTTON cTitBt1 OF oDlg SIZE 40, 12 ACTION (lOk := .T., oDlg:End()) DEFAULT @ 08,16 BUTTON cTitBt2 OF oDlg SIZE 40, 12 ACTION (lOk := .F., oDlg:End()) CANCEL ACTIVATE DIALOG oDlg CENTERED RETURN cValue
Boa tarde, posso disponibilizar um exemplo, me adicione no skype.
-
Veja o exemplo em ..\samples\combos.prg do fivewin:
// Showing the use of different styles of ComboBoxes controls
#include "FiveWin.ch"
#include "Combos.ch"
//----------------------------------------------------------------------------//
function Main()
local oDlg, oSay
local oCbx1, oCbx2, oCbx3
local cItem1, cItem2 := "One", cItem3, cItem4 := "None"
SET _3DLOOK ON
// SkinButtons()
DEFINE DIALOG oDlg RESOURCE "Combos"
REDEFINE COMBOBOX oCbx1 VAR cItem1 ITEMS { "One", "Two", "Three" } ;
ID ID_SIMPLE OF oDlg ;
ON CHANGE ( cItem4 := cItem1, oSay:Refresh() ) ;
VALID ( cItem4 := cItem1, oSay:Refresh(), .t. )
REDEFINE COMBOBOX oCbx2 VAR cItem2 ITEMS { "One", "Two", "Three" } ;
ID ID_DROPDOWN OF oDlg ;
STYLE CBS_DROPDOWN ;
ON CHANGE ( cItem4 := cItem2, oSay:Refresh() ) ;
VALID ( If( ! oCbx2:Find( oCbx2:oGet:GetText() ),;
oCbx2:Add( oCbx2:oGet:GetText() ),), .t. )
oCbx2:oGet:bKeyDown = { | nKey | SearchItem( nKey, oCbx2 ) }
REDEFINE COMBOBOX oCbx3 VAR cItem3 ITEMS { "One", "Two", "Three" } ;
ID ID_DROPDOWNLIST OF oDlg ;
ON CHANGE ( cItem4 := cItem3, oSay:Refresh() ) ;
VALID ( cItem4 := cItem3, oSay:Refresh(), .t. )
REDEFINE SAY oSay PROMPT cItem4 ID ID_SELECTION OF oDlg COLOR "R+/W"
ACTIVATE DIALOG oDlg CENTERED
return nil
//----------------------------------------------------------------------------//
function SearchItem( nKey, oCbx )
local nAt
if Len( AllTrim( oCbx:oGet:GetText() ) ) == 1
if ( nAt := AScan( oCbx:aItems, { | c | Left( c, 1 ) == AllTrim( oCbx:oGet:GetText() ) } ) ) != 0
oCbx:oGet:SetText( oCbx:aItems[ nAt ] )
return 0
endif
endif -
Bom dia, eu uso apenas os SPEDs.
Abraço.
-
Boa noite, estou também iniciando o desenvolvimento, estou verificando a possibilidade de usar o projeto ACBR para criar uma dll. Alguem mais ?
-
Uso o harbour boleto a bastante tempo, ultimamente tive que usar para caixa econômica e foram necessários ajustes, no mais tudo ok.
-
Boa noite, eu trabalho e gero lote, qual a sua dúvida?
-
Pessoal, alguém sabe como se comporta isso com base de dados grandes e SQL?
-
Boa noite, acho que este ano, se tudo der certo, vou poder comparecer. Mas falando em ADS, apenas gostaria de dizer que não uso a sintaxe xBase para manipulação de banco de dados a uns 8 anos ou mais, decidi escrever algumas classes que manipulam banco de dados usando sql puro. Desta forma, trabalho com sistema acessando banco de dados na nuvem super tranquilo. Com estas classes, tenho formas automatizadas de criar cadastros, consultas e processos de forma extremamente otimizadas e de código enxuto. Vou tentar desta vez participar do encontro.
Abraços.
-
Boa noite, eu desisti da linguagem xBase para manipular banco de dados a muito tempo, se for usar na nuvem, então, esquece, o desempenho é sofrível, atualmente tenho minhas próprias classes que usam somente sql purissimo.
Abraço.
-
Poxa, e ai vamos ter que ir para o Harbour obrigatoriamente?
-
Boa tarde
Use tabela alias tab new
dbgotop()
while !Eof()
campo1 := campodbf1
campo2 := campodbf2
no postgree
insert....
cSql := "insert into tabelax set campo1 = '"+campo1+"', campo2 = '"+campo2+"', etc, etc, etc
// execute o sql com a funcao especifica
dbskip(1)
end
Att
João Bosco
-
Já percebi que a flexdocs gera pdf, mas não tinha olhado, vou dar uma verificada.
-
Bom dia, a solução de visualizar o danfe e gerar um pdf da tela de visualização já está ok, a solução que eu preciso é que na hora de enviar o e-mail do xml ao cliente, já consiga gerar o pdf e enviar junto, ai neste ponto que eu preciso gerar um pdf sem a intervenção do usuário.
-
Obrigado Kapiaba, na real eu uso hoje o CutePDF Writer para imprimir o danfe, pela classe do Gilmer, que por sua vez usa a tprinter. A solução que eu preciso é que não tenha que abrir a tela para que o usuário tenha que informar o arquivo. Uso a versão 1209 do fivewin. Você tem nfe e imprime Danfe?
-
Ari, veja este: pdfMachine 14.18, simplesmente fantástico,
http://www.baixaki.com.br/download/pdfmachine.htm
em conjunto com este Foxit PDF Reader 4.3.1.0323,
http://www.baixaki.com.br/download/foxit-pdf-reader.htm
Estes dois juntos, dão um show.
Abs,
João Santos - São Paulo.
kmt_karinha@pop.com.br
joao@pleno.com.br
Fone: (11) 3106-2832 / 8243-5632 - TIM
FWH 2.7 - xHARBOUR WorkShop.Exe
Ressucitando o assunto, este pdfMachine permite que vc gere o pdf sem abrir a tela solicitando o nome do arquivo pelo usuário?
Abraços.
-
Boa tarde, fui na pagina do harbour boleto ver se havia alguma atualização e me parece que está desativada, alguem mais confirma? Por coincidencia, vou precisar mexer para implementar o banco Banrisul que não tem. Pretendo dar uma revisada geral e implementar varias melhorias que estou pensando. O fonte que tenho aqui data de 2008, se tivesse uma atualização mais nova talvez as coisas que eu iria fazer ja existem.
-
Boa tarde, Judson, esta base de dados é grande? Como você faz para incrementar o número do pedido/orçamento/vendas? No passado quando eu ainda usava dbf, quando a base começou a crescer, ocorria que a leitura e gravação ficava lenta e quando mais de um mandava gravar ao mesmo tempo ai dava muito problema, a solução na época foi criar uma tabela com um unico registro para controlar os ultimos numeros dos pedidos/orçamentos/vendas, etc. Desta forma, cada vez que eu ia gravar, eu pegava o ultimo numero nesta tabela de um unico registro e incrementava, depois gravava na tabela dos dados. Depois que implementei esta solução em todo meu sistema, nunca mais me incomodei, e tinha cliente que mais de 10 vendedores trabalhavam ao mesmo tempo. Quem sabe poderia ser uma solução.
-
Bom dia, eu uso o harbourboleto com xHarbour, nunca deu problema, gera remessa e trata retorno também.
-
Manoel, estou na mesma que você, estudando o layout. Como fazer tem, porque já existe solução como a NFE que faz isso, o problema, como você mesmo citou, é a imensidão do projeto, que é enorme.
-
Bom dia, em Fastreport não tenho, não uso esta ferramenta. Espero que alguem possa lhe ajudar melhor então.
-
Bom dia, meu sistema possui os livros fiscais, porém não sei se são neste formato que mencionou, tenho um cliente que usa a mais de 10 anos, não sei se resolve o seu problema, posso enviar uma amostra em pdf.
Abraço.
-
Boa tarde, segue o meu fonte.
// Quando o usuario clicar Ok para iniciar , com o browse marcado......
For a := 1 to len( [ sua lista de tabelas, ou seu browse de tela ] )
CASE [ linha do seu browse ] == "tabela abc"
// Mensagem ao usuario tipo "aguarde, indexando a tabela abc..."
SWCreateIndex( [ linha do seu browse ], [Nome do indice no banco ], [nome do campo ] )
SWCreateIndex( [ linha do seu browse ], [Nome do indice no banco ], [nome do campo , nome do campo 2 ] )
// e assim sucessivamente, para varios indices da mesma tabela
next a // proxima tabela marcada
// etc, finalizar.
*******************************************************************************************
*******************************************************************************************
FUNCTION SWCreateIndex( cTable, cIndex, cKey )
LOCAL cDropIndex := ""
IF cTable = NIL .OR. cIndex == NIL .OR. cKey == NIL
RETURN( .F. )
ENDIF
cDropIndex := "DROP INDEX " + Upper( AllTrim( cIndex ) )
IF Upper( oSistema:cDbDriver_ ) == "MYSQL"
cDropIndex := "DROP INDEX " + Upper( AllTrim( cIndex ) ) + " ON " + Upper( AllTrim( cTable ) )
ENDIF
TRY
SWExecSql( cDropIndex,.F. )
SWExecSql( "CREATE INDEX " + Upper( AllTrim( cIndex ) ) + " ON " + Upper( AllTrim( cTable ) ) + " (" + Upper( AllTrim( cKey ) ) + ")",.F. )
CATCH
SWExecSql( "CREATE INDEX " + Upper( AllTrim( cIndex ) ) + " ON " + Upper( AllTrim( cTable ) ) + " (" + Upper( AllTrim( cKey ) ) + ")",.F. )
END
RETURN( .T. )Desculpe se nao ta claro o suficiente, qualquer coisa é so pedir por email, ou skype.
Abraço.
-
Na SqlRdd o codigo é -1
Vou tentar implementar algo também, depois posto o fonte e o resultado.
Abraços
-
Empresoft, tem que dar o drop antes sim. O banco não faz automatico. Em meu sistema tenho uma tela com um browse que permite as tabelas que seram criados os indices, isso para o caso de no decorrer do desenvolvimento você ir criando mais indices conforme achar necessário. Uma ideia é fazer uma função para automatizar a criação e já fazer o drop. Recomendo fortemente a rever suas tabelas e criar os indices o mais rapido possivel, porque tua aplicação vai decolar em termos de performance, principalmente se tiver base de dados grande. Se quiser posto o meu fonte de criação de indices.
Abraço.
Timer - Exemplo funciona mas dentro do projeto não
in Programação
Posted
Reavivando o tópico, coisa antiga, problema novo:
Quando uso o timer em uma dialog, funciona redondinho, quando eu uso em uma window, não funciona, alguem já possou por uma barbaridade dessa?
Abraços.