Jump to content
Fivewin Brasil

oribeiro

Membros
  • Posts

    1,291
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by oribeiro

  1. oribeiro

    telegram

    Alguém conseguiu fazer essa função de envio para Telegram Messenger? Instalei o aplicativo no meu celular e tentei rodar essa função mas está retornando erro
  2. Consegui definindo o tipo da coluna como 'F' WITH OBJECT oBrw:Foto :cDataType := 'F' :nDataBmpAlign := AL_CENTER END Obrigado.
  3. Pessoal, Alguém tem um exemplo de xBrowse com imagem? Eu fiz esse aqui mas ele mostra em todos os registros a mesma imagem do primeiro. DEFINE DIALOG oDlg SIZE 800,600 PIXEL TITLE '(OASyS) Confime os produtos que irão para o site:' @ 10,10 XBROWSE oBrw OF oDlg ; SIZE -10,-10 PIXEL ; COLUMNS 'Grupo', 'Descr', 'VlUnit', 'Foto'; ALIAS 'SITE' LINES NOBORDER // oBrw:Married:SetCheck() // Default FWH Bitmap is Alpha WITH OBJECT oBrw:Foto :AddBitmap( Foto ) :bBmpData := { || 1 } END WITH OBJECT oBrw :nStretchCol := 1 :nMarqueeStyle := 4 END oBrw:CreateFromCode() ACTIVATE DIALOG oDlg CENTERED
  4. Ajudou muito... Vou estudar esse exemplo desse link, do Ariston Santos, sobre como usar Array em conjunto com o :Exec(). http://fivewin.com.br/index.php?/topic/26973-socorro-em-sql/ Obrigado.
  5. Decidi colocar todos os relacionamentos na tabela principal no SQLRDD em vez de fazer um relacionamento em cascata como eu costumava usar no DBFCDX e está tudo funcionando. Fica aqui a dica para caso alguém venha ter o mesmo problema ao migrar para SQLRDD. Obrigado a todos que me ajudaram a desvendar essa diferença no funcionamento do DBF em relação ao SQL. Agora vou explorar mais os comandos nativos do SQL para agilizar os processos.
  6. Pessoal, Estou aprendendo a usar o SQLRDD e estou impressionado com o resultado. Mas, porque isso funciona: cSql := "SELECT M.NR_PD, I.ITEM, C.ABREV, T.ABREV, V.ABREV, E.ENDERECO, G.DESCR, P.PROD, S.CLASSIF, B.DESCR, R.DESCR, N.CFOP FROM FTPEDITE AS I"+; " INNER JOIN FTPRODUT AS P ON I.PROD = P.PROD" +; " INNER JOIN FTPEDMES AS M ON I.NR_PD = M.NR_PD"+; " INNER JOIN FTCLIMES AS C ON M.NR_CL = C.NR_CL"+; " INNER JOIN FTTRANSP AS T ON M.NR_TR = T.NR_TR"+; " INNER JOIN FTVENDED AS V ON M.NR_VD = V.NR_VD"+; " INNER JOIN TBNAT AS N ON M.NAT = N.NAT" +; " INNER JOIN FTGRUPOS AS G ON C.NR_GR = G.NR_GR"+; " INNER JOIN FTCLIEND AS E ON C.NR_CL = E.NR_CL AND C.LOC_FATU = E.LOCAL"+; " INNER JOIN MTGRUPOS AS R ON LEFT(P.PROD,2) = R.NR_GR"+; " INNER JOIN TBCLASSI AS S ON P.CF = S.CF" +; " INNER JOIN TBCST AS B ON P.CST = B.CST" USE (cSql) NEW SHARED ALIAS FTPEDITE xBrowse() e isso não? nSql:=SR_GetConnection() nSql:Exec( "SELECT M.NR_PD, I.ITEM, C.ABREV, T.ABREV, V.ABREV, E.ENDERECO, G.DESCR, P.PROD, S.CLASSIF, B.DESCR, R.DESCR, N.CFOP FROM FTPEDITE AS I"+; " INNER JOIN FTPRODUT AS P ON I.PROD = P.PROD" +; " INNER JOIN FTPEDMES AS M ON I.NR_PD = M.NR_PD"+; " INNER JOIN FTCLIMES AS C ON M.NR_CL = C.NR_CL"+; " INNER JOIN FTTRANSP AS T ON M.NR_TR = T.NR_TR"+; " INNER JOIN FTVENDED AS V ON M.NR_VD = V.NR_VD"+; " INNER JOIN TBNAT AS N ON M.NAT = N.NAT" +; " INNER JOIN FTGRUPOS AS G ON C.NR_GR = G.NR_GR"+; " INNER JOIN FTCLIEND AS E ON C.NR_CL = E.NR_CL AND C.LOC_FATU = E.LOCAL"+; " INNER JOIN MTGRUPOS AS R ON LEFT(P.PROD,2) = R.NR_GR"+; " INNER JOIN TBCLASSI AS S ON P.CF = S.CF" +; " INNER JOIN TBCST AS B ON P.CST = B.CST" ) xBrowse() Qual é a diferença entre eu usar o USE (cSql) e o nSql:Exec() ? No primeiro caso o xBrowse() mostra todos os campos selecionados e no segundo caso não mostra nada, mesmo sem apresentar nenhum erro no nSql:Exec().
  7. Assim? Local DbCliE, DbCliM, DbNFM, DbTest Local iData[02], FData[02], CUF[2], NINT[2], nEst[02] // Filtro para o banco de dados: iData[02] := CTOD("01/06/2017") FData[02] := CTOD("30/06/2017") CUF[2] := "SP" NINT[2] := 1 nEst[02] := 1 // Cria tabela para Teste // FnErase("_TESTE") DBCREATE("_TESTE",{{"CAMPO","C",72,0}}) USE _TESTE SHARED NEW ALIAS "_TESTE" DbTest := Alias() // Seleciona as Tabelas e os Relacionamentos // USE FTCLIEND SHARED NEW ALIAS "FTCLIEND" DbCliE := Alias() DbSetOrder("FTCLIE01") USE FTCLIMES SHARED NEW ALIAS "FTCLIMES" DbCliM := Alias() DbSetOrder("FTCLIM01") Set Relation To (DbCliM)->NR_CL+(DbCliM)->LOC_FATU Into (DbCliE) //// ->> TIREI DAQUI USE FTNFMES SHARED NEW ALIAS "FTNFMES" DbNFM := Alias() DbSetOrder("FTNFM01") Set Relation To (DbNfM)->NR_CL Into (DbCliM) ,; To (DbCliM)->NR_CL+(DbCliM)->LOC_FATU Into (DbCliE) //// <<- COLOQUEI AQUI Set Filter To (DbNfM)->Dt_Emiss>=iData[02] .AND.; (DbNfM)->Dt_Emiss<=fData[02] DbGoTop() Do While !Eof() If (cUF[02]==(DbCLIE)->Estado) .OR.; (nInt[02]=1.AND.(DbCLIE)->Estado<>pEstado).OR.; (nEst[02]=1.AND.(DbCLIE)->Estado==pEstado) Select(DbTest) OADbAppend() REPLACE CAMPO WITH PADR(ALLTRIM(mmSerie) ,03) +; // serie subserie STRZERO(VAL(LEFT(StrNum((DBNFM)->NR_NF,.f.),6)),06) +; // Numero da NF (inicial) STRZERO(VAL(LEFT(StrNum((DBNFM)->NR_NF,.f.),6)),06) +; // Numero da NF (final) PADR(" UF + NOME => " ,16) +; PADR((DbCliE)->Estado ,02) +; // Estado PADR((DbCliM)->Nome ,34) // Nome EndIf Select(DbNfM) DbSkip() Enddo Select(DbTest) DbCommit() DbGoTop() xBrowse() DbCloseAll() FnErase("_TESTE")
  8. Em vez de DBSetOrder(1) eu coloquei DBSetOrder("FTCLIM01") -> coloquei os nomes dos indices. E a situação foi a mesma. Aguardo seu exemplo, obrigado pela ajuda.
  9. Nesse exemplo acima, notei que funciona se eu fizer o relacionamento consolidado no último arquivo, assim: // Seleciona as Tabelas e os Relacionamentos // USE FTCLIEND SHARED NEW VIA "SQLRDD" DbCliE := Alias() DbSetOrder(1) USE FTCLIMES SHARED NEW VIA "SQLRDD" DbCliM := Alias() DbSetOrder(1) USE FTNFMES SHARED NEW VIA "SQLRDD" DbNFM := Alias() DbSetOrder(1) Set Relation To (DbNfM)->NR_CL Into (DbCliM),; To (DbCliM)->NR_CL+(DbCliM)->LOC_FATU Into (DbCliE) em vez de: // Seleciona as Tabelas e os Relacionamentos // USE FTCLIEND SHARED NEW DbCliE := Alias() DbSetOrder(1) USE FTCLIMES SHARED NEW DbCliM := Alias() DbSetOrder(1) Set Relation To (DbCliM)->NR_CL+(DbCliM)->LOC_FATU Into (DbCliE) USE FTNFMES SHARED NEW DbNFM := Alias() DbSetOrder(1) Set Relation To (DbNfM)->NR_CL Into (DbCliM) Só não entendi porque.
  10. Sputnik, Esse código está mais simples: Se eu as duas linhas abaixo funciona, caso contrário ele não traz os dados do cliente: // (DbCliM)->NR_CL = (DbCliM)->NR_CL // INSERIDO PARA CORRIGIR ERRO DE RELACIONAMENTO COM SQL // (DBCLIE)->NR_CL = (DBCLIE)->NR_CL // INSERIDO PARA CORRIGIR ERRO DE RELACIONAMENTO COM SQL Veja o código: Local DbCliE, DbCliM, DbNFM, DbTest Local iData[02], FData[02], CUF[2], NINT[2], nEst[02] // Filtro para o banco de dados: iData[02] := CTOD("01/06/2017") FData[02] := CTOD("30/06/2017") CUF[2] := "" NINT[2] := 1 nEst[02] := 1 // Cria tabela para Teste // DBCREATE("_TESTE",{{"CAMPO","C",72,0}},"SQLRDD") USE _TESTE SHARED NEW VIA "SQLRDD" DbTest := Alias() // Seleciona as Tabelas e os Relacionamentos // USE FTCLIEND SHARED NEW VIA "SQLRDD" DbCliE := Alias() DbSetOrder(1) USE FTCLIMES SHARED NEW VIA "SQLRDD" DbCliM := Alias() DbSetOrder(1) Set Relation To (DbCliM)->NR_CL+(DbCliM)->LOC_FATU Into (DbCliE) USE FTNFMES SHARED NEW VIA "SQLRDD" DbNFM := Alias() DbSetOrder(1) Set Relation To (DbNfM)->NR_CL Into (DbCliM) Set Filter To (DbNfM)->Dt_Emiss>=iData[02] .AND.; (DbNfM)->Dt_Emiss<=fData[02] DbGoTop() Do While !Eof() // (DbCliM)->NR_CL = (DbCliM)->NR_CL // INSERIDO PARA CORRIGIR ERRO DE RELACIONAMENTO COM SQL // (DBCLIE)->NR_CL = (DBCLIE)->NR_CL // INSERIDO PARA CORRIGIR ERRO DE RELACIONAMENTO COM SQL IF (cUF[02]==(DbCLIE)->Estado) .OR.; (nInt[02]=1.AND.(DbCLIE)->Estado<>pEstado).OR.; (nEst[02]=1.AND.(DbCLIE)->Estado==pEstado) Select(DbTest) OADbAppend() REPLACE CAMPO WITH PADR(ALLTRIM(mmSerie) ,03) +; // serie subserie STRZERO(VAL(LEFT(StrNum((DBNFM)->NR_NF,.f.),6)),06) +; // Numero da NF (inicial) STRZERO(VAL(LEFT(StrNum((DBNFM)->NR_NF,.f.),6)),06) +; // Numero da NF (final) PADR(" UF + NOME => " ,16) +; PADR((DbCliE)->Estado ,02) +; // Estado PADR((DbCliM)->Nome ,34) // Nome Endif Select(DbNfM) DbSkip() Enddo Select(DbTest) DbCommit() DbGoTop() Browse() DbCloseAll() FnErase("_TESTE")
  11. Até eu que criei o código acho difícil de entender. Risos. Vou tentar montar um código pequeno que apresente o problema de perder o relacionamento.
  12. Estou tentando trocar SET RELATION TO por SR_SETJOIN mas não estou conseguindo. Alguém pode me fornecer uma ajuda?
  13. Não consegui usar o SR_SETJOIN então decidi usar o SELECT / JOIN mas também não está dando certo. Onde estou errando?
  14. Alguém tem um exemplo do comando SR_SETJOIN() ?
  15. Valeu João. Vou continuar estudando. Obrigado.
  16. Sputnik, Obrigado pela sua disposição em ajudar. Coloquei exatamente os mesmos parâmetros que você e não resolveu. Também tentei com o REQUEST SQLEX e sem ele e não notei nenhuma diferença. Talvez seja alguma configuração no banco de dados. Vou continuar estudando o problema aqui para ver se descubro o motivo. Por favor, se possível, me envie o seu SQL.LIB para oscar.oasys@gmail.com
  17. Pessoal, Com SQLRDD, se eu avançar o registro e voltar ele funciona redondinho. Assim: Select PEDIDOS DbSkip() DbSkip(-1) Parece que ele não consegue trazer os registros do banco para a memória a tempo de fazer os relacionamentos. Será que é alguma configuração no banco? É necessário dar algum comando de refresh no registro a cada DBSkip(), DBGoto(), etc.?
  18. Pessoal, Para tirar a desconfiança do SET RELATION eu fiz o seguinte teste: USE TBCST SHARED NEW USE TBCLASSI SHARED NEW USE MTGRUPOS SHARED NEW USE FTPRODUT SHARED NEW SET RELATION TO CST INTO TBCST ,; TO CF INTO TBCLASSI,; TO LEFT(PROD,2) INTO MTGRUPOS USE FTGRUPOS SHARED NEW USE FTCLIEND SHARED NEW USE FTCLIMES SHARED NEW SET RELATION TO NR_GR INTO FTGRUPOS,; TO NR_CL+LOC_FATU INTO FTCLIEND USE FTVENDED SHARED NEW USE TBNAT SHARED NEW USE FTTRANSP SHARED NEW USE FTPEDMES SHARED NEW SET RELATION TO NR_VD INTO FTVENDED,; TO NAT INTO TBNAT ,; TO NR_TR INTO FTTRANSP,; TO NR_CL INTO FTCLIMES USE FTPEDITE SHARED NEW SET RELATION TO NR_PD INTO FTPEDMES,; TO PROD INTO FTPRODUT DBGOTOP() oPara := TTxtFile():New( "k:\sqlrela.txt" ) if oPara:Open() for n = 1 to 1000 oPara:Add( FTPEDMES->NR_PD +", "+; FTCLIMES->ABREV +", "+; FTTRANSP->ABREV +", "+; FTVENDED->ABREV +", "+; FTCLIEND->ENDERECO+", "+; FTGRUPOS->DESCR +", "+; FTPRODUT->PROD +", "+; TBCLASSI->CLASSIF +", "+; TBCST->DESCR +", "+; MTGRUPOS->DESCR +", "+; TBNAT->CFOP ) FTPEDITE->(DBSKIP()) next oPara:Close() endif Primeiro eu rodei esse código numa base DBF e gerei um arquivo texto com o nome DBFRELA.TXT. Depois eu rodei esse mesmo código numa base SQL com os mesmos dados da base DBF e gerei o arquivo SQLRELAT.TXT Comparando os arquivos, eles estão exatamente iguais. Não entendo porque quando gero relatórios com esses mesmos relacionamentos, na base DBF sai certo e na base SQL ele perde os relacionamentos?
  19. Eu estou com: FWH18.02 xHarbour 1.2.3 Intl. (Simplex) (Build 20180311) Borland/Embarcadero C++ 7.3 (32-bit) MSSQL NATIVE50505 SQLRDD(EX) 9.0, Build 0015, MGMNT 1.72 Minhas LIBs estão sendo carregadas na seguinte ordem: LIBFILES = $(FWH)\lib\fivehx.lib $(FWH)\lib\fivehc.lib lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib common.lib gtgui.lib codepage.lib ct.lib libeay32.lib ssleay32.lib tipssl.lib tip.lib pcrepos.lib hsx.lib hbsix.lib zlib.lib hbzip.lib png.lib hbzebra.lib $(CC_DIR)\lib\import32.lib $(CC_DIR)\lib\cw32.lib $(CC_DIR)\lib\psdk\msimg32.lib $(CC_DIR)\lib\psdk\psapi.lib $(CC_DIR)\lib\psdk\shell32.lib $(SQL)\sqlbcc70.lib $(SQL)\libpq.lib $(SQL)\odbccp32.lib $(SQL)\libmysql.lib $(SQL)\oci.lib $(SQL)\fbclient_bc.lib $(CC_DIR)\lib\psdk\odbc32.lib O que será que está dando errado?
  20. Qual banco você usa? Estou com o MariaDB
  21. Pessoal, Consegui identificar claramente o problema com SET RELATION usando SQLRDD. É o seguinte? Se eu tenho apenas um SET RELATION funciona muito bem, do tipo: USE CLIENTES NEW USE ENDERECOS NEW SET RELATION TO numcli INTO CLIENTES Mas se eu tenho múltiplos relacionamentos, daí não funciona com SQLRDD (onde com DBF funcionava perfeitamente), assim: USE VENDEDORES NEW USE CLIENTES NEW SET RELATION TO numven INTO VENDEDORES USE ENDERECOS NEW SET RELATION TO numcli INTO CLIENTES // Com SQLRDD Ele perde o relacionamento do cliente com o vendedor. Alguém já encontrou uma solução? Senão vou ter que remover o SET RELATION de todos os meus programas e usar DBSEEK() em cada tabela.
  22. Tem uma API dessa de graça para capturar dados de um CPF ?
  23. As informações desse site receitaws são confiáveis? Quem mantém esse banco atualizado?
  24. Muito legal essa consulta. Você sabe se o site vai disponibilizar o número da Inscrição Estadual ? Só falta esse número para a consulta ficar completa. Obrigado.
×
×
  • Create New...