Jump to content
Fivewin Brasil

oribeiro

Membros
  • Posts

    1,291
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by oribeiro

  1. Tenho um arquivo grande de contas que contém todos os registros (recebidos e a receber) tem registros antigos que estão em aberto e com o sr_setfilter() eles não aparecem. Com o DBFCDX funciona normal. O que devo fazer para que o sr_setfilter() leia o arquivo inteiro e traga todos os registros que estão em aberto VRORIGINAL > VRRECEBIDO.
  2. Olá Jorge, A minha rotina faz isso, mas depois de importar um arquivo grande da erro. Só no LocalWeb. Com Postgres instalado na rede local não dá erro. Se você puder me enviar a sua rotina eu testo aqui e vejo se estou fazendo algo errado. Obrigado.
  3. Se eu utilizo o filtro: A.TIPO="P" o sistema funciona normalmente com o SR_SETFILTER() Mas se eu incluo a comparação de valores numéricos, assim: A.TIPO="P" AND A.VRDOC > A.VRREC O sistema trava. Existe alguma regra para filtrar campos de valor numérico?
  4. Entendi! Valeu a dica. Alias, esse SR_cDbValue() que você usa é bem interessante. Obrigado.
  5. Estou importando dados do DBF para o SQL e toda vez que ele termina de importar uma tabela com muitos registros, dá esse erro: 12/03/2018 11:11:24: SQLExecDirect Error (-1) MySQL server has gone away - MySQL server has gone away Command sent to database : CREATE TABLE `cep` ( `cep` CHAR (9) , `endereco` CHAR (40) , `compl` CHAR (40) , `cidade` CHAR (25) , `estado` CHAR (2) , `sr_recno` BIGINT (15) NOT NULL UNIQUE AUTO_INCREMENT , `sr_deleted` CHAR (1) NOT NULL ) Engine=InnoDb Steatment handle : Connection handle : RetCode : -1 SR_MYSQL:RUNTIMEERR Linha : 904 SR_MYSQL:EXEC Linha : 394 SR_WORKAREA:SQLCREATE Linha : 5408 DBCREATE Linha : 0 CRIA_MODIF Linha : 3556 F_DBFS Linha : 60 ORGANIZA1 Linha : 382 ORGANIZA Linha : 219 (b)F_ORGA Linha : 108 TBUTTONBMP:CLICK Linha : 179 TBUTTON:HANDLEEVENT Linha : 1685 TBUTTONBMP:HANDLEEVENT Linha : 264 _FWH Linha : 3368 SENDMESSAGE Linha : 0 TDIALOG:COMMAND Linha : 426 TWINDOW:HANDLEEVENT Linha : 0 TDIALOG:HANDLEEVENT Linha : 924 DIALOGBOX Linha : 0 TDIALOG:ACTIVATE Linha : 296 F_ORGA Linha : 138 (b)BUILDMENU Linha : 583 TMENU:COMMAND Linha : 1548 TWINDOW:COMMAND Linha : 1087 TMDIFRAME:COMMAND Linha : 262 TMDIFRAME:HANDLEEVENT Linha : 0 _FWH Linha : 3368 WINRUN Linha : 0 TMDIFRAME:ACTIVATE Linha : 1043 MAIN Linha : 421 Com tabelas com poucos registros ele não reclama! Risos
  6. Valeu a dica. Vou trocar os comandos Set Filter por SR_SETFILTER. Pelo que notei será apenas trocar tirar os pontos do .AND. e do .OR. e o resto é igual no filtro. Esse comando aceita Field-> ou devo remover? Aproveitando, notei que o SQLRDD usa MySQL 4.1 e Postgres 9.0 e o LocalWeb hospeda bancos nas versões: MySQL 5.6: bases ilimitadas com até 1 GB cada (10 por site) PostgreSQL 9.5: bases ilimitadas com até 10 GB cada (3 por site) Vou ter problema com essas versões do LocalWeb? Obrigado.
  7. Sim. Você consegue. Estou fazendo testes também com SQLRDD e gostando muito.
  8. Entendi, nesse caso se tem duas pessoas acessando e modificando o mesmo pedido na rede vai valer o que o último gravar. Vou ter alguns problemas com isso. Mas dá para contornar. Dúvida: Se eu usar o SR_BeginTransaction() antes do REPLACE e no final eu continuar usando o DbCommit() ele já fará automaticamente o SR_EndTransaction() e o SR_CommitTransaction()? Obrigado Jackson.
  9. Não encontrei algo similar aos comandos RLock(), FLock(), DbUnLock() no SQLRDD. Existe uma forma de bloquear o registro enquanto está sendo modificado pelo usuário? Isso é necessário quando de usa um gerenciador de banco de dados?
  10. Funcionou. Muito obrigado.
  11. Eu consegui gerar o QRCODE em BitMap no disco com a instrução: hDib := DibFromBitmap( oCode:hCodeBar ) DibWrite( "QRCODE.BMP" , hDib ) // Grava arquivo BMP no disco É possível imprimir o código QRCODE sem a necessidade de gerar o arquivo BMP no disco?
  12. Pessoal, Peguei esse exemplo no fórum do fivewin, compilei com o hbzebra.lib do xHarbour 1.2.3, mas não está gerando o CódigoQR, vocês sabem onde está o erro? * CodeQR.prg * 08/03/2018 * Programa para gerar código QR #include "fivewin.ch" /* CODEBAR.CH #include "hbzebra.ch" #define CODEBAR_EAN13 1 #define CODEBAR_EAN8 2 #define CODEBAR_UPCA 3 #define CODEBAR_UPCE 4 #define CODEBAR_ITF 5 #define CODEBAR_MSI 6 #define CODEBAR_CODABAR 7 #define CODEBAR_CODE11 8 #define CODEBAR_CODE39 9 #define CODEBAR_CODE93 10 #define CODEBAR_CODE128 11 #define CODEBAR_PDF417 12 #define CODEBAR_DATAMATRIX 13 #define CODEBAR_TYPE 1 #define CODEBAR_BLOCK 2 #define CODEBAR_QRCODE 14 #define DEFAULT_CODEBAR CODEBAR_PDF417 */ Function TesteCodeQR() Local oCode Local oPrn oCode:=TCodeBars():New( 500, 500 ) oCode:nHeightCode = 3 // altura -> 7.23 PAGINA CHEIA oCode:nWidthCode = 3 // Largura -> 7.23 PAGINA CHEIA oCode:SetType( 14 ) // CODEBAR_QRCODE oCode:SetCode( "35141146377222003730599000004630001158179941|20141105134922|10.00|61694805808|m+4o8FY1lig1zcy6VU3t7INVwE6kiA/ykLXKDFZfb9gu0g4wl3Fk2HYaRhSt8G+yk9mP/R65m3R7V2IO8CxnmO1oVtlamB6UKA+UZZqDNEqtYlhQzLySNzMG0thaNMZsq5RxmQ3eQLPw8LLez3MqWvUveFXNSSq6AGEX2+KOdavteo3K2L06SQoVIjwkmcgRzqhfHP3y8t2wfr1nw/WAnaCF9ZY/K4dTykk3hsXcan/MKCTBlcSOhNgSh3sdsQHpl2w2tmbLBsYBLFkuvKlwzHarNJQ1RfRznGdojHglQH1KVtbAUXKke54pdRt3JL7nJlR+Lbmtd2tjcT2vRyTepw==" ) // Texto para gerar o QRCode oCode:SetFlags( 0 ) // Não sei o que é oCode:Build() // Cria o código * PRINT oPrn NAME "Imprimir QrCode" PREVIEW PAGE *Drawbitmap( oPrn, oCode:hCodeBar, 100, 100) *oPrn:SayImage( 100, 100, oCode:hCodeBar, 300, 300 ) *oPrn:SayBitmap( 100, 100, oCode:hCodeBar, 300, 300 ) //Drawbitmap( oPrn:hDCOut, oCode:hCodeBar, 200, 400) Drawbitmap( oPrn:hDCOut, oCode:hCodeBar, 200, 400) //oPrn:Say( 500, 100, "This is a test" ) ENDPAGE ENDPRINT * // oCode:End() // Encerra TCodeBar() Return nil //--------------------------------------// CLASS TCodeBars DATA aTypes HIDDEN DATA cCode DATA nFlags DATA hCodeBar DATA hData DATA nType, nWidth, nHeight, nWidthCode, nHeightCode METHOD New() METHOD End() INLINE DeleteObject( ::hCodeBar ), If( ::hData != NIL, hb_zebra_destroy( ::hData ), ) METHOD DefError( nError ) METHOD SetCode( cCode ) METHOD SetFlags( nFlags ) METHOD SetType( cnType ) METHOD Reset() INLINE ::End() METHOD Build() METHOD Rebuild() INLINE ::Reset(), ::Build() ENDCLASS //--------------------------------------// METHOD New( nWidth, nHeight, nWidthCode, nHeightCode, cnType, cCode, nFlags ) CLASS TCodeBars DEFAULT nWidth := 200,; nHeight := 100,; nWidthCode := 1,; nHeightCode := 3 ::aTypes = { { "EAN13" , {| | hb_zebra_create_ean13( ::cCode, ::nFlags ) } },; { "EAN8" , {| | hb_zebra_create_ean8( ::cCode, ::nFlags ) } },; { "UPCA" , {| | hb_zebra_create_upca( ::cCode, ::nFlags ) } },; { "UPCE" , {| | hb_zebra_create_upce( ::cCode, ::nFlags ) } },; { "ITF" , {| | hb_zebra_create_itf( ::cCode, ::nFlags ) } },; { "MSI" , {| | hb_zebra_create_msi( ::cCode, ::nFlags ) } },; { "CODABAR" , {| | hb_zebra_create_codabar( ::cCode, ::nFlags ) } },; { "CODE11" , {| | hb_zebra_create_code11( ::cCode, ::nFlags ) } },; { "CODE39" , {| | hb_zebra_create_code39( ::cCode, ::nFlags ) } },; { "CODE93" , {| | hb_zebra_create_code93( ::cCode, ::nFlags ) } },; { "CODE128" , {| | hb_zebra_create_code128( ::cCode, ::nFlags ) } },; { "PDF417" , {| | NIL /*hb_zebra_create_pdf417( ::cCode, ::nFlags ) */} },; { "DATAMATRIX" , {| | hb_zebra_create_datamatrix( ::cCode, ::nFlags ) } },; { "QRCODE" , {| | hb_zebra_create_qrcode( ::cCode, ::nFlags ) } } } ::nWidth = nWidth ::nHeight = nHeight ::nWidthCode = nWidthCode ::nHeightCode = nHeightCode ::SetType( cnType ) ::SetCode( cCode ) ::SetFlags( nFlags ) return Self //--------------------------------------// METHOD Build() CLASS TCodeBars local hBmpOld local hDCDesk := GetDC( GetDesktopWindow() ) local hDCMem := CreateCompatibleDC( hDCDesk ) local hBrush := CreateSolidBrush( 0 ) local hBack := CreateSolidBrush( CLR_WHITE ) ::hCodeBar = CreateCompatibleBitMap( hDCDesk, ::nWidth, ::nHeight ) hBmpOld = SelectObject( hDCMem, ::hCodeBar ) ::hData := Eval( ::aTypes[ ::nType ][ 2 ] ) // [ CODEBAR_BLOCK ] ::DefError() FillRect( hDCMem, { 0, 0, ::nHeight, ::nWidth }, hBack ) hb_zebra_draw( ::hData, {| x, y, w, h | FillRect( hDCMem, { y, x, y + h, x + w }, hBrush ) }, 0, 0, ::nWidthCode, ::nHeightCode ) //DrawText( hDCMem, ::cCode, { ::nHeight - 15, 0, ::nHeight, ::nWidth }, 1 ) SelectObject( hDCMem, hBmpOld ) ReleaseDC( GetDesktopWindow(), hDCDesk ) DeleteDC( hDCMem ) DeleteObject( hBrush ) DeleteObject( hBack ) return NIL //--------------------------------------// METHOD SetCode( cCode ) CLASS TCodeBars if ! Empty( cCode ) if ValType( cCode ) != "C" cCode = cValToChar( cCode ) endif ::cCode = cCode endif return NIL //--------------------------------------// METHOD SetFlags( nFlags ) CLASS TCodeBars ::nFlags = nFlags return NIL //--------------------------------------// METHOD SetType( cnType ) class TCodeBars local cType if ( ( cType := ValType( cnType ) )$"CN" ) if cType == "N" if cnType > 0 .and. cnType < 15 ::nType = cnType endif else ::nType = AScan( ::aTypes, {| a | a[ CODEBAR_TYPE ] == Upper( cnType ) } ) endif else ::nType = 12 // DEFAULT_CODEBAR endif return NIL //--------------------------------------// METHOD DefError( ) CLASS TCodeBars local oError local nError := 0 if ::hData != NIL nError = hb_zebra_geterror( ::hData ) endif if nError != 0 hb_zebra_destroy( ::hData ) oError := ErrorNew() oError:SubSystem = "TCODEBARS" oError:SubCode = nError oError:Severity = 2 Eval( ErrorBlock(), oError ) endif RETURN nil //--------------------------------------// #pragma BEGINDUMP #include <hbapi.h> #include <windows.h> HB_FUNC( CREATECOMPATIBLEBITMAP ) // hDC, nWidth, nHeight { hb_retnl( ( LONG ) CreateCompatibleBitmap( ( HDC ) hb_parnl( 1 ), hb_parnl( 2 ), hb_parnl( 3 ) ) ); } #pragma ENDDUMP *Eof( CodeQR.Prg )
  13. Estou usando o MariaDB para começar.
  14. Excelente! Funcionou. Achei que ia ser mais complicado. Minha aplicação já está quase 100% funcionando com SQLRDD. Muito obrigado a todos pela ajuda e paciência. Tem um manual com todos os comandos dessa lib?
  15. Pessoal, Como faço para apagar uma tabla no banco MYSQL com SQLRDD? Tentei Erase(), fErase() e nada. Risos Obrigado.
  16. Okay. Adaptei a função e funcionou. Agora vou estudar como listar tabelas dentro do banco que começam com determinado caracter e a função para apagar tabela no banco. Estou chegando lá.
  17. Estou muito contente com o resultado e conseguindo resolver a maioria dos problemas. Nesse caso, o que você sugere que eu faça?
  18. Pessoal, Estou rodando a minha aplicação inteira com SQLRDD, sensacional!!! Funciona quase tudo... quase tudo. Quando eu uso o comando: _CtFil := DBFILTER() // grava filtro atual O SQLRDD retorna A.`tipo`="R" Depois o comando: Set Filter To &_CtFil // volta filtro anterior Não funciona. Obs. No DBFCDX esse mesmo comando retorna: Field->tipo="R" e daí funciona.
  19. Antes eu tivesse dado ouvidos a você Jackson, quando tinha a disposição da juventude, agora os 53 estão pesando e tenho que ir mais devagar. Risos Bom, meu plano é o seguinte: - Minha aplicação é bem grande, então, no primeiro momento, eu quero mudar o quanto menos possível os meus PRGs e só depois ir mudando tudo para SQL. Para atingir esse objetivo, parece ser melhor eu usar no primeiro instante a lib SQLRDD e o banco MySQL que mais testado com essa LIB, estou certo? Posso usar todos os comandos que utilizo hoje com DBF/CDX usando SQLRDD se eu optar por PostGres? Qual banco funciona melhor com a SQLRDD?
  20. Jorge, boa tarde. Eu vou precisar me curvar ao SQL, coisa que o Jackson sabe a quantos anos que venho relutando. Risos Gostei muito desse seu cronograma e pretendo seguir exatamente esses passos. Adquiri o FWH18.01 e estou com o SQLRDD. Agora quero instalar o gerenciador do banco de dados Maria ou MySQL. Qual versão desses bancos devo instalar? Qual é o gerenciador de banco que devo usar? Peço que, por favor, me disponibilize o máximo de informações que puder. Obrigado.
  21. Nas versões mais recentes do SQLRDD o scope está funcionando?
  22. Muito obrigado. Voltou a funcionar como antes. Ufa! Postei essa alteração no FWH em inglês. Acompanhe essa discussão em http://forums.fivetechsupport.com/viewtopic.php?f=3&t=35329&p=210356#p210356
  23. Valeu a dica. Apenas cancelei a linha 438 do PRINTER.PRG METHOD End() CLASS TPrinter if ::hDC != 0 if ! ::lMeta if ::lStarted EndDoc(::hDC) endif else Aeval(::aMeta,{|val| ferase(val) }) ::aMeta := {} ::hDCOut := 0 endif if ::nOrient != nil if ::nOrient == DMORIENT_PORTRAIT ::SetPortrait() else ::SetLandscape() endif endif // PrinterEnd() // 01/03/2018 (Oscar): Tirei essa linha para que ele mantenha a impressora selecionada no GetPrintDC() sem mudar a impressora Default do Windows. DeleteDC( ::hDC ) ::hDC := 0 endif if ::oFont != nil ::oFont:End() endif oPrinter := nil return nil
  24. É assim mesmo que eu uso esse comando. Eu tive esse problema mas voltou a funcionar depois que conversei com o Linares em 2008, só não me lembro o que foi alterado.
×
×
  • Create New...