Jump to content
Fivewin Brasil

Scooby

Membros
  • Posts

    229
  • Joined

  • Last visited

Recent Profile Visitors

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

Scooby's Achievements

Newbie

Newbie (1/14)

1

Reputation

  1. Boa Tarde Emotta Eu fiz diversos testes e não consegui nenhum retorno positivo, olhei com outros programadores de outras linguagens e a solução também foi a mesma, gravação de registro ou através de abertura de arquivo ou via vetor ( multiplos insert ). Entrei em contato com o Rafael Culik também e ele me reportou agora que não é possível efetuar join como conexão externa, somente as que estão dentro da mesma conexão e de diferentes schemas. Então agora é gravar dessa maneira. Agradeço a compreensão e ajuda de todos
  2. pode, estou montando um levantamento para desenvolver uma outra linguagem pois o acesso a esse tipo de recurso parece ser bem escarço.
  3. Bom Dia Senhores fhw : Na verdade eu estou precisando mesmo é com comandos MySql, mas obrigado pela intenção. Emotta: pois é, eu também estou procurando em vários lugares e ainda não achei algo compatível ao desejado, sim dei uma olhada em várias ferramentas que criam links entre os bancos, porém nenhuma que funcione de mysql para mysql gratuita, ainda vou continuar procurando. Jmsilva, Pois é, eu vi o funcionamento da função SR_SetActiveConnection , porém ela define que no momento que eu executo o "oSlq:Exc", eu já tenha setado em qual banco/conexão aquela query será montada e executava. É dai que vem o meu problema, como são bancos MySql ( Local e Nuvem ), eu tenho que abrir os 2 schemas e efeutar ambas conexões e excutar um único comando ( Join ) que possa ligar essas duas conexões diferentes... se fosse a opção um ou outro estaria tranquilo, o problema é que eu estou levando os dados que estão local para nuvem, então a melhor forma seria evitar interação com loop ou abertura de tabelas para replicação e afins. Fazendo isso com somente 1 comando Sql economizar tempo de execução além de deixar o código mais fácil de manutenção. Para ter mais ou menos ideia de como seria, seria assim: Veja o exemplo da própria SQLRDD, a função SR_SetActiveConnection( nCnn1 ) é a responsável por ativar a conexão desejada, a partir dela pode ser feito o CRUD via cmd sql ou via função do xHarbour DBAPPEND() #include "sqlrdd.ch" nCnn1 := SR_AddConnection( CONNECT_MYSQL, cConnString1 ) // 1 Local nCnn2 := SR_AddConnection( CONNECT_MYSQL, cConnString2 ) // 2 Nuvem SR_SetActiveConnection( nCnn1 ) SR_SetActiveConnection( nCnn2 ) nConn := SR_GetActiveConnection() oSQL := SR_GetConnection( nCnn2 ) nErr := oSql:exec( 'INSERT INTO nCnn1.Banco1.TabelaXX(Campo1, Campo2, Campo3 ...) SELECT Campo1, Campo2, Campo3 ... FROM nCnn2 .Banco2.TabelaXX Where Condicional',.t.,.t.)
  4. Boa Tarde Senhores Gostaria de perguntar se alguém já passou por essa situação. Atualmente estou com um banco de dados na Nuvem ( Google Cloud - MySql ) e um banco de dados Local ( MySql 5.7 ). Eu consigo via conexões separadas efetuar consultas em ambos os bancos. Porém estou passando pela seguinte situação, eu vou precisar efetuar um CRUD nas tabela do Servidor Nuvem. É ai que está o problema, estou utilizando a SqlRdd e para diferenciar as conexões eu utilizo assim: conexao:=sr_addconnection() // e guarda o número da conexão Sr_getconnection(conexao) // retorna o objeto da conexão pra executar queries Faço isso para ambas conexões. Porém eu gostaria de executar esse comando ou um join qualquer: INSERT INTO banco.tabela-destino (campo1, campo2, campo3...) SELECT campo1,campo2,campo3... FROM banco.tabela-origem; Ai é que eu não estou conseguindo, alguém já passou por esse problema? Agradeço antecipadamente Márcio Pinheiro
  5. Bom Dia senhores. Estou com a seguinte duvida, estou utilizando um arquivo .ini para que o usuário possa definir a fonte que será utilizada no sistema bem como a largura e comprimento. Arquivo .Ini FONTE_NOME=Tahoma FONTE_ALTURA=5 FONTE_LARGURA=-14 LOGOMARCA_ARQUIVO=LogoSuc.Bmp ICONE_ARQUIVO=IcoSuc.Bmp Porém acontece o seguinte: fiz todas as configurações no sistema. Procedure DefFonSys(oFon_,oBmp_,oIco_,vNomIco_) // Define a fonte do sistema Local vFonNam:="",vNomLog:="",vNomIco:="",; nFonAlt:=0,nFonLar:=0 If !Empty(vTxtIni:=MemoRead(cCamPro_+"Success.Ini")) vFonNam:=RatTxt(vTxtIni,"FONTE_NOME=",0) nFonAlt:=Val(RatTxt(vTxtIni,"FONTE_ALTURA=",0)) nFonLar:=Val(RatTxt(vTxtIni,"FONTE_LARGURA=",0)) vNomLog:=RatTxt(vTxtIni,"LOGOMARCA_ARQUIVO=",0) vNomIco:=RatTxt(vTxtIni,"ICONE_ARQUIVO=",0) EndIf vFonNam:=AllTrim(If(Empty(vFonNam),"Tahoma",vFonNam)) nFonAlt:=If(Empty(nFonAlt),5,nFonAlt) nFonLar:=If(Empty(nFonLar),-14,nFonLar) vNomLog:=AllTrim(If(Empty(vNomLog),"LogoSuc.Bmp",vNomLog)) vNomIco:=AllTrim(If(Empty(vNomIco_),If(Empty(vNomIco),"IcoSuc.Bmp",vNomIco),vNomIco_)) Define Font oFon_ Name vFonNam Size nFonAlt,nFonLar Define BitMap oBmp_ File(cCamPro_+vNomLog) Adjust Define Icon oIco_ File(cCamPro_+vNomIco) O problema que acontece é o seguinte, em algumas telas o formato da fonte, simplesmente não ocorre e o que é pior, o sistema ainda a transforma em 'Negrito', gostaria de saber se alguém pode me ajudar com essa questão. Imagem do erro: https://drive.google.com/open?id=1n6_xRz70ir5vUU4udwwE2qjACLvMRrmE Att
  6. Então gente Encontrei a resposta do problema... oBrwOse:bLClicked :={||(lClkOse:=.T.,lClkSae:=.F.)} era só colocar a chamada assim, que o single click deu a possibilidade de permitir executar uma ação.. Vlw
  7. Bom Dia aferra Então, coloquei o recurso que você falou acima, ele executa ao inicializar a tela, porém se eu mudo o foco pro Listbox ao lado, ele não executa novamente o bloco de código. Pra ficar mais fácil até coloquei a imagem abaixo da tela, pra ver se fica mais fácil o entendimento. https://1drv.ms/i/s!AmBm4nJiUvnr4yePW6nex8N2wFwv
  8. Pois é Kapiaba, não utilizo nenhum prg de terceiros.. utilizo esse mesmo que postou.. Quanto a forma de trabalho que você postou acima, é o mesmo que utilizo aqui, porém nesse caso de controle o single click é uma exceção que estamos criando, e pra esse recurso funcionar eu precisaria mesmo desse recurso para conseguir controlar os botões de acordo com o browse selecionado.
  9. oBrwOse:SetArray(aTmpOse) oBrwOse:aJustify :={.F.,.F.,.F.,.T.,.F.,.F.,.T.,.T.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.} oBrwOse:nLineStyle:=4 oBrwOse:bLClick :={||MsgYesNo("Teste1")} <- Linha 200 oBrwOse:bLDblClick:={|nRow,nCol| IncIteOse(!(oBrwOse:nAt<Len(aTmpOse)),@lNovOse,@lNovIte,@vCodiOse,oDlgOse)} oBrwOse:bKeyChar :={|nKey|If(nKey=13 ,IncIteOse(!(oBrwOse:nAt<Len(aTmpOse)),@lNovOse,@lNovIte,@vCodiOse,oDlgOse),Nil)} oBrwOse:bKeyDown :={|nKey|If(nKey=VK_F3,IncIteOse(.T.,@lNovOse,@lNovIte,@vCodiOse,oDlgOse),; If(nKey=VK_F4,IncIteOse(.F.,@lNovOse,@lNovIte,@vCodiOse,oDlgOse),Nil))} oBrwOse:nClrText :={||If(aTmpOse[oBrwOse:nAt,26]="C",CLR_HBLUE,CLR_BLACK)} oBrwOse:nClrPane :={||If(oBrwOse:nAt%2==0,CLR_AZUL3,CLR_WHITE)}
  10. Bom Dia Senhores Gostaria de tirar uma dúvida, estou usando a TwBrowse e em uma tela estou adicionando 2 listbox que serão a armazenado dados distintos, porém ambos os listbox possuem o mesmo padrão de botões e nesse caso estou tentando evitar redundância na tela e me surgiu uma duvida. Estou tentando colocar a regra, onde ao clicar sobre o listbox desejado e pressionar o botão "incluir" por exemplo, o sistema possa saber de qual lisbox foi o que estava selecionado. Tentei executar o "bLClick", porém o sistema me retornou esse erro, gostaria de saber se alguém já passou por esse problema. Descrição do Erro: Advertência BASE/1005 Message not found: TWBROWSE:_BLCLICK Chamada da Sequência: ================= Chamada De: TWBROWSE:ERROR(174) Chamada De: TWBROWSE:MSGNOTFOUND(208) Chamada De: TWBROWSE:_BLCLICK(0) Chamada De: DA0017(200) Chamada De: (b)MMENU(99) Chamada De: TMENU:COMMAND(561) Chamada De: TWINDOW:COMMAND(1199) Chamada De: TMDIFRAME:COMMAND(255) Chamada De: TMDIFRAME:HANDLEEVENT(0) Chamada De: _FWH(3450) Chamada De: WINRUN(0) Chamada De: TMDIFRAME:ACTIVATE(1152) Chamada De: MAIN(52) Variaveis em uso: ================= Procedimento Tipo Valor ========================== (b)MAIN Param 1: O Classe: ERROR TWBROWSE:ERROR Param 1: C "Message not found" Param 2: C "TWBROWSE" Param 3: C "_BLCLICK" Param 4: N 1005 Local 1: U Local 2: O Classe: TWBROWSE Local 3: N 16 TWBROWSE:MSGNOTFOUND Param 1: C "_BLCLICK" Param 2: O Classe: TWBROWSE TWBROWSE:_BLCLICK Param 1: A Len: 2 DA0017 Param 1: U Param 2: C " " Param 3: C " " Param 4: C " " Param 5: C " " Param 6: C "" Local 1: U (b)MMENU Param 1: O Classe: TMENUITEM TMENU:COMMAND Param 1: N 20013 Local 1: O Classe: TMENU Local 2: O Classe: TMENUITEM TWINDOW:COMMAND Param 1: N 20013 Param 2: N 0 Local 1: O Classe: TMDIFRAME Local 2: N 0 Local 3: N 20013 Local 4: N 0 TMDIFRAME:COMMAND Param 1: N 20013 Param 2: N 0 Local 1: O Classe: TMDIFRAME Local 2: L .F. TMDIFRAME:HANDLEEVENT Param 1: N 273 Param 2: N 20013 Param 3: N 0 _FWH Param 1: N 0 Param 2: N 273 Param 3: N 20013 Param 4: N 0 Param 5: N 1 Local 1: O Classe: TMDIFRAME WINRUN Param 1: N 264536 TMDIFRAME:ACTIVATE Param 1: C "MAXIMIZED" Param 2: U Param 3: U Param 4: U Param 5: U Param 6: B {|| ... } Param 7: U Param 8: B {|| ... } Param 9: U Param 10: U Param 11: U Param 12: U Param 13: U Param 14: U Param 15: U Param 16: U Param 17: B {|| ... } Param 18: U Param 19: U Param 20: L .F. Local 1: O Classe: TMDIFRAME Local 2: U Local 3: U Obrigado Antecipadamente
  11. Boa Tarde Kapiaba Então... Configurei as Dll´s do mesmo jeito do seu e o erro persiste. Sim o executavel, Gbasmsb.exe se encontra tanto no diretório onde se encontra o executável, quanto CurDrive()+":\"+CurDir()+'\gbas\windows\' e em nenhum dos casos eu consigo gerar o arquivo, via winexec. Eu faço a verificação antes de enviar o comando de gerar o arquivo txt. if !File( cExeDir+"gbasmsb.exe" ) MsgStop('Arquivo gbasmsb.exe não localizado!','Atenção') Return( .F. ) endif Já passei um email para o suporte da DataSus e nada... eu tbm acho que o problema seja no executável, agora estou no aguardo da resposta deles.
  12. Bom Dia Kapiaba Então, o teste que eu estou fazendo é numa máquina com windows XP, eu já fiz diversos testes... quando eu tiro o conteudo " > C:\retorno.txt" ou " > c:\retorno\retorno.txt", o executável gbasmsb.exe gera a chave que preciso, isso usando o winexec. Porém ao executar esse mesmo comando no prompt de comando o arquivo é gerado com sucesso... por isso eu não sei se de fato o problema é no executavel ( gbasmsb ). Coloquei o trecho que código que você me passou e ocorreu o mesmo problema... abre-se uma tela do dos, porém não é gerado o arquivo dentro da pasta c:\retorno
  13. local nHandle, cTmpFile := dtos(date())+strtran(time(),":")+".dna" local cExeDir := CurDrive()+":\"+CurDir()+'\gbas\windows\' ::Dna := "" ferase( cTmpFile ) if !File( cExeDir+"gbasmsb.exe" ) MsgStop('Arquivo gbasmsb.exe não localizado!','Atenção') Return( .F. ) endif WinExec( "gbasmsb.exe --solicitacao 12345678909 12123123000111 3759 GO 30/09/2014 > c:\retorno.txt" ) WinExec( cExeDir+"gbasmsb.exe --solicitacao 12345678909 12123123000111 3759 GO 30/09/2014 > c:\retorno.txt" ) WinExec( cExeDir+"gbasmsb.exe --solicitacao "+::Cpf+" "+::Cnpj+" "+::Crm+" "+::UF+" "+dtoc(::Data_Receita) ) return (.t.)
  14. Boa Tarde gente!!! Eu estou com o seguinte problema: Estou usando a função "winexec" e não consegui puxar o retorno do gbasmsb.exe. Se eu abrir uma janela do prompt do DOS e executar o comando "gbasmsb.exe --solicitacao 12345678909 12123123000111 3759 GO 29/09/2014 > c:\retorno.txt" eu consigo gerar o arquivo texto com o conteúdo do DNA gerado, porém se eu faço a mesma execução dentro do sistema o mesmo não retorna nenhum arquivo, somente abre o prompt do Dos e fecha. Alguém já passou por esse problema?
  15. Olá a Todos Só para constar o encerramento do tópico, conversei com o Luiz Kulik e ele me passou a seguinte ferramenta, caso alguém precise Xpdf: Download www.foolabs.com/xpdf/download.html Muito bom... Abraço Márcio Pinheiro Varjão DECLA TECNOLOGIA xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8
×
×
  • Create New...