Luiz FERNANDO

Members
  • Content count

    88
  • Joined

  • Last visited

  • Days Won

    14

Everything posted by Luiz FERNANDO

  1. Vlw Cassiano deu certinho, já tinha desmarcado todos checkbox possiveis, mais esse ai estava bem escondido(rsrsrs)
  2. Boa tarde, pessoal quando se usa essa combinação ( ctrl e rolar a bolinha do mouse pra baixo ) a tela aumenta e diminui de tamanho, tem como bloquear isso. Obg
  3. Boa noite, aproveitando o tópico, não consigo usar as tecla F? no code(key pressed) de uma table IF KeyPressed(Asc(CR)) THEN ExecuteProcess(BTN_selecionar,trtClick) // funciona END IF KeyPressed(VK_SPACE) = True THEN Info("SPACE") // funciona END IF KeyPressed(VK_F6) = True THEN Info("F6") // não funciona END IF KeyPressed(VK_F7) = True THEN Info("F7") // não funciona END no inicio do sistema já coloquei essas duas linhas EXTERN "KeyConst.WL" EXTERN "WinConst.WL" Algum colega teria alguma dica, obg
  4. Colega ainda não trabalho com analisys, vou pesquisar sobre o HDescribeConnection Obg
  5. Pessoal alguém sabe me dize qse consigo trabalhar com dois banco de dados ao mesmo tempo hoje para conectar eu uso assim gnConexao = SQLConnect(p_endereco, p_usuario, p_senha, p_Banco, "MySQL") o detalhe se eu fazer uma nova conexão eu perco a de cima Obg
  6. Pessoal sempre acesso o banco de dados usando a porta 3306 gnConexao = SQLConnect(p_endereco, p_usuario, p_senha, p_Banco, "MySQL") porem estou com um caso aqui aonde a porta 10536, pela sintaxe do SQLconnec não consigo descobrir como enviar essa informação Obg
  7. Pessoal queria compra uma impressora Bluetooh para usar na windev mobile, algum amigo poderia indicar alguma, tipo essa de baixa será que da certo. https://www.americanas.com.br/produto/1710024322/mini-impressora-bluetooth-termica-portatil-58mm-android?WT.srch=1&acc=e789ea56094489dffd798f86ff51c7a9&epar=bp_pl_00_go_inf-aces_acessorios_geral_gmv&gclid=CjwKCAjw8df2BRA3EiwAvfZWaFR-z0ozSUgCuyLZGqESo_e41fytNp7wBxJDQhxdP-iQhSgYJujazxoCcpwQAvD_BwE&i=5ed0855249f937f62523f63d&o=5ebe2c36f8e95eac3db673da&opn=YSMESP&sellerId=32142035000151&sellerid=32142035000151&wt.srch=1#info-section Obg.
  8. Colegas preciso fazer uma busca numa array, aonde o resultado pode ser mais de 1 registro, como faço para percorrer dentro dela, depois de localizado o primeiro item. nResultado = ArraySeek(arrParcelas,asLinear,1,arrPedidos[x,17]) IF nResultado <> -1 THEN arrParcelas[nResultado,5]="Teste" END Obg
  9. Jânio como vc veio do xharbour, veja o código abaixo, aqui eu utiliza uma tabela a parte apenas para o controle desses numero, que no meu caso tb não pode ser o campo ID, trabalho com mysql. function fSequencia_generica(cAlias,cCodcli,cCampo,nTamanho,nTabela) local nSqlro1,aCad,aCad1,aca1,cSql1 local aSql:={} default cCampo:='codigo' default nTamanho:=7 aCad:="SELECT "+ccampo aCad+=" FROM "+cAlias aCad+=" WHERE uso1='N'" aCad+=" AND uso2='N'" aCad+=" AND tabela ='"+nTabela+"'" SqlExecute("commit") aSql:=SqlArray(aCad) if len(aSql)=0 aCad:="SELECT "+ccampo aCad+=" FROM "+cAlias aCad+=" WHERE tabela ='"+nTabela+"'" aCad+=" ORDER BY "+cCampo+" DESC LIMIT 1 " SqlExecute("commit") aSql:=SqlArray(aCad) if SQLErrorNO() > 0 MsgStop("Numero do Erro SQL.: " + STR(SQLErrorNO(),10,0)+CHR(13)+CHR(13)+SQLErrorMsg()+" "+'cBanco',"sistema") return(.F.) endif if LEN(aSql)==0 nSqlro1:=STR(1) nSqlrow=str(Val(nSqlro1)) cCodcli=(StrZero(Val(nSqlro1),nTamanho)) else nSqlro1:=aSql[01,01] nSqlrow=str(Val(nSqlro1)+1) cCodcli=Strzero((Val(nSqlro1)+1),nTamanho) endif SQLBeginTrans() cSql1:=" UNLOCK TABLES" sqlexecute(cSql1) SQLEndTrans() SQLBeginTrans() cSql:="INSERT INTO "+cAlias+" ( tabela,codigo,uso1,uso2 )" cSql+="VALUES( "+any2sql(nTabela)+" , "+any2sql(cCodcli)+" , "+any2sql('S')+" , "+any2sql('N')+" )" SqlExecute(cSql) if SQLErrorNO() > 0 fMensagem() return(.f.) endif SqlExecute("commit") SQLRollBack() SQLEndTrans() SQLRefresh() else cCodcli=(strzero(val(aSql[1,1]),nTamanho)) SQLBeginTrans() cSql:="UPDATE "+cAlias+" SET" cSql+=" uso1="+Any2Sql('S')+" " cSql+=" WHERE codigo="+Any2Sql(cCodcli)+" " cSql+=" AND tabela='"+nTabela+"'" sqlexecute(cSql) if SQLErrorNO() > 0 fMensagem() return(.f.) endif SQLExecute("commit") SQLRollBack() SQLEndTrans() SQLRefresh() endif return(NIL) exemplo de uma aplicação que uso isso, cadastro de produto, preciso do código do produto antes de incluir ele, qdo clico em novo ele pega o numero e deixa o campo USO1 com S, caso eles sair sem gravar faço um UPDATE deixando este campo USO1 como N, aonde sera aproveitado para o próximo cadastro.
  10. consegui aqui, dessa forma deu certo PROCEDURE kardex_novo(arrkardex is dynamic array)
  11. Pessoal estou com a seguinte situação aqui aqui chamo uma procedure, enviando como parametro uma array kardex_novo(arrKardex) aqui é a declaração de minha array PROCEDURE kardex_novo(arrKardex is array of 1 by 9 ANSI string) ele da erro em tempo de execução, tipo se tiver 7 registros(linhas) na arrKardex, ele espera essa sintaxe PROCEDURE kardex_novo(arrKardex is array of 7 by 9 ANSI string) em tempo de execução nunca irie saber o numero de linhas, como seria a forma correta de fazer essa declaração Obg
  12. Colega obg pela resposta, acho que o caminho é por ai mesmo, tentando acertar a sintaxe aqui. FileToArray(arrItens,SQLFetch("aSQL")) assim que conseguir retorno aqui
  13. Sera que é possível jogar de forma automático todo conteúdo de um select em uma array, sem ter que passar por um WHILE SQLFetch, e alimentar registro a registro sS_CmdSQL = [ SELECT k.codigo,k.saldo,k.sql_rowid FROM kardex k INNER JOIN (SELECT MAX(sql_rowid) AS sql_rowid FROM kardex WHERE setor = %1 AND codigo IN ( %2 ) GROUP BY codigo) groupedk ON k.sql_rowid = groupedk.sql_rowid ] sS_CmdSQL = StringBuild(sS_CmdSQL, sProduto ) IF SQLExec(sS_CmdSQL,"aSQL")=False THEN SQLInfo("aSQL") sS_Mensagem=SQL.MesErreur Info(sS_Mensagem) SQLClose("aSQL") RETURN END i=1 WHILE SQLFetch("aSQL") = 0 arrItens[i,1]=SQLGetCol("aSQL",1) arrItens[i,2]=val(SQLGetCol("aSQL",2)) i++ Dimension(arrItens, i, 22) END Obg
  14. Vlw Cassiano pelo retorno, vou comprar essa ai então teste, e aproveitar o codigo fonte do link acima. Abs
  15. Vlw Janio, era isso mesmo que precisava, muito bom o debug da windev ainda não tinha mexido com ele, obg
  16. Pessoal em windev tem alguma coisa do tipo xbrowse(minha_array) mostrar todas colunas e linhas de uma array , sem precisar criar um window com table
  17. Pessoal na description de um EDT deixei como NO CAPTION, via programação como faço para deixar na opção OUTSIDE, tipo algo assim EDT_qtd_separado..CaptionWidth = outside obg
  18. Pessoal existe algum comando nesse estilo, aonde podemos escolher o texto das duas opções, tentei usar o DIALOG mais não tive sucesso. ex: IF YesNo("O que deseja fazer com a diferença","BOM DIA","BOA TARDE") THEN END Depois que postei consegui acertar a sintaxe de DIALOG IF Dialog("O que deseja fazer com a diferença", ... ["BOM DIA","BOA TARDE"], 1, 2, dlgIconQuestion) = 1 THEN END
  19. Perfeito, queria algo mais em modo de teste, em tempo de programação. Obg
  20. Vlw Cassiano, com o comando abaixo está quebrando o calho num primeiro momento. SysIconDisplayTooltip("MEU TEXTO","TITULO", sysTooltipTypeInfo)
  21. Pessoal consigo deixar apenas uma janela(nesse caso não é a window principal) do projeto na bandeja do windows. Obg
  22. Pessoal sempre fiz Download de arquivo txt por FTP, mais sempre era arquivos com nomes fixo, da forma abaixo funciona perfeito gbRetornoDownload = FTPGet(gnConexao, gsGLO_caminho1+gsVendedor+"/cliente.rem" , gsGlO_retorno+"cliente.rem") bGbRetornoDelFtp = FTPDeleteFile(gnConexao,gsGLO_caminho1+gsVendedor+"/cliente.rem") mais agora estou com uma situação que a unica que sei que os arquivos começa com v_*.rem, e podem ser varios, usando a forma abaixo funciona certo no emulador e tb na windev desktop, porem direto no aparelho , ele consegue apagar o arquivo do ftp, porem fazer download pro aparelho não. FTPListFile(gnConexao,gsGLO_caminho1+gsVendedor+"/v_*.rem","FTPlistaarquivos",ftpFile+ftpDirectory) PROCEDURE FTPlistaarquivos(sFileName,nFileSize <useful>,sAttribute,sModifDate <useful>,sModifTime <useful>) nResultado is int bGbRetornoDelFtp is boolean gbRetornoDownload is boolean gbRetornoDownload = FTPGet(WIN_sincronizar.gnConexao, gsGLO_caminho1+gsVendedor+"/"+sFileName , gsGlO_retorno+sFileName) bGbRetornoDelFtp = FTPDeleteFile(WIN_sincronizar.gnConexao,gsGLO_caminho1+gsVendedor+"/"+sFileName) RESULT True se alguém tiver uma forma diferente de se fazer isto, realmente estou deste ontem em cima disto sem conseguir solucionar, lembrando que no emulador, e tb na windev desktop funciona normal. Obg
  23. Pessoal eu ainda não uso Analysis de banco de dados, a unica forma que sei dar um select seria dessa forma sS_CmdSQL = [ SELECT p.codigo,p.descricao,p.valor,p.tipo,p.valor2,p.volume,p.embalage ,p.custo,p.grupo,p.mini1,'',p.multiplico,p.desc_max1,ifnull(p.kilo,'0'),ifnull(p.preco_kilo,'0') ,p.marca,p.iva_in,iva_ex FROM produto as p WHERE ifnull(p.desativa1,'0')<>'1' AND ifnull(p.desativa5,'0')<>'1' ] IF SQLExec(sS_CmdSQL,"aSQL")=False THEN SQLInfo("aSQL") sS_Mensagem=SQL.MesErreur Info(sS_Mensagem) SQLClose("aSQL") RETURN END WHILE SQLFetch("aSQL") = 0 // aqui irei percorrer meu resultado do select END estou com uma situação aqui aonde preciso percorrer mais N vezes esse resultado, mais o WHILE SQLFetch("aSQL") = 0 só funciona uma unica vez, a segunda ele nem entra dentro do WHILE, alguém saberia me dizer como faço para setar ele no inicio novamente. Obg
  24. Pessoal funcionou aqui 100%, meu problema que no primeiro WHILE estava insistindo em usar SQLFetch("aSQL") = 0, só depois no segundo que estava fazendo conforme a dica do nathanreys , a partir de agora somente irei usar o WHILE SQL.Out = False não terei mais problema nesse sentido, pq usando SQLFetch("aSQL") ele realmente zera o conteúdo. Obg a todos pelo ajuda.
  25. Cassiano vc esta usando Analysis de banco de dados ? vc primeiro mandou percorrer com WHILE SQLFetch("aSQL") = 0 eu copie e colei o código dele no meu projeto, não entra no while no segundo WHILE