nathanreys

Members
  • Content count

    30
  • Joined

  • Last visited

  • Days Won

    7

nathanreys last won the day on April 26

nathanreys had the most liked content!

Community Reputation

31 Excellent

About nathanreys

  • Rank
    Terceiro Sargento
  1. Os registros citados foram criados após definição da chave como "unique"? No seu código de inclusão, está realizando algum tratamento extra como as options do HAdd " hIgnoreDuplicates " ou " hIgnoreIntegrity"?
  2. No webdev eu costumo trabalhar bastante com template de página De uma estudada no recurso Nesse caso, um site feito a partir de um template base, você colocaria esse código em uma página apenas, no template. E assim todas as outras páginas construídas a partir do template herdariam o código.
  3. Sessão (webdev dinâmico), o awp não tem esse tratamento de contexto automático né? Ainda não desenvolvi nenhum projeto em AWP
  4. Me desculpa a distração @LuckSilver, não havia me atentado que o tópico era referente ao Webdev. Porém trabalho da mesma maneira No código do projeto "Initializing XXX (server)" tenho uma variável global para conexão gctMyConnectionCNPJ is Connection // Conexão com a base de dados referente ao CNPJ da empresa gctMyConnectionCNPJ..Provider = hAccessHFClientServer gctMyConnectionCNPJ..Database = "" // Será atribuido após login no sistema gctMyConnectionCNPJ..Server = "localhost" E assim que o usuário acessar o sistema pela tela de login tenho o seguinte código gctMyConnectionCNPJ..Database = gsCNPJLogado + "_NomeBaseDados" HChangeConnection("*",gctMyConnectionCNPJ) HModifyStructure("*",hmsBackgroundTask) HCreationIfNotFound("*",hDelayedOpening) E não faço nada mais além disso em relação a conexão Nessa simulação por exemplo, ao logar o cliente é redirecionado para uma base de dados própria da sua empresa
  5. Você também pode identificar direto a linha que precisa alterar algum valor da coluna através da função TableSeek (https://help.windev.com/en-US/?3074015&name=TableSeek) E após, fazer a alteração da maneira que o @FABRÍCIO indicou. Ficando algo similar a: nPosicao is int = TableSeek(COL_ID, "5", searchExactMatch) IF nPosicao <> -1 THEN Table[nPosicao}.COL_X = "OK"
  6. Como você está dentro do exception, basta forçar o desvio indicando que uma exceção ocorreu, assim não precisa nem do seu contador Altere a linha "IF HModify(a16cid) = False THEN nContaErro++" para "IF HModify(a16cid) = False THEN ExceptionThrow(1)" Dessa maneira está sendo indicado manualmente que ocorreu uma exceção neste ponto do código e o fluxo vai ser desviado para o DO, onde você pode por exemplo, cancelar as transações https://help.windev.com/en-US/?3034005&name=ExceptionThrow
  7. O apontamento não precisa ser refeito a todo momento não, a não ser que você em algum ponto esteja fechando essa conexão novamente Aqui não tenho esse problema não. Tente deixar essa sua variável de conexão criada como global do projeto ou então mudar os parâmetros da própria conexão da analysis Tenho um projeto aqui que faz a troca logo no início, na "End of initialization" da primeira janela que o sistema abre. MyConn..Provider = hAccessHFClientServer MyConn..User = sUsuario MyConn..Password = sSenha MyConn..Server = sServidor + ":" + sPorta MyConn..Database = sDatabase // Alterar conexões HChangeConnection("*",MyConn) // Manter a conexão das configurações DFe LOCAL ctMyConn_Classic is Connection ctMyConn_Classic..Provider = hAccessHF7 HChangeConnection(DFe,ctMyConn_Classic)
  8. Se eu não estiver muito errado, a maneira do acesso direto ao "STC_Teste" só funcionaria se a janela já estivesse aberta no momento do uso de "Win_Teste.STC_Teste" Se chamar isso e a janela não estiver aberta, ocorre erro na execução pois está chamando um controle que ainda não existe Tirando a passagem por parâmetro, não me vem a mente nenhuma outra maneira de atribuir um valor para algo que ainda "não existe"
  9. Talvez não tenha entendido muito bem a sua necessidade e também nunca importei para o projeto o print preview, mas da maneira tradicional, passando o parâmetro pelo iPrintReport e no relatório tratar o parâmetro para saber se registra ou não, poderia lhe auxiliar em algo? iPreview() iInitReportQuery(RPT_ContasReceber_Cliente,gsCNPJAtivo,EDT_DataInicial,EDT_DataFinal) iPrintReport(RPT_ContasReceber_Cliente,EDT_DataInicial,EDT_DataFinal)
  10. Qual a versão do Windev utilizado? Seu relatório é por programação ? Baseado em arquivo ? Em query? Se for em query, tem-se antes do iPrintReport o uso da função "iInitReportQuery" para inicializar a query e os possíveis parâmetros
  11. nContador is int = 0 nRetorno is int nRetorno = SQLFetch("aSQL") Trace("primeiro retorno: " + nRetorno) WHILE nRetorno = 0 nContador += 1 nRetorno = SQLFetch("aSQL") Trace("meu retorno dentro do while agora foi " + nRetorno) END Trace("entrei no loop " + nContador + " vezes") Algo nesse sentido Veja também se usando SQLNext não resolve sua situação, baseado no exemplo do help (https://help.windev.com/?3072030&name=sqlnext_function)
  12. Segundo o próprio help, o uso dessa função seria dessa maneira mesmo (https://help.windev.com/?3072011&name=sqlfetch_function) Sugiro ir debugando mais detalhadamente para ver se encontra algo como: - Ver se não tem nenhum SQLClose no meio do tratamento da recuperação do resultado do select - Confirmar se a consulta realmente está retornando mais de um registro usando diretamente a interface do gerenciador do banco de dados que usa - Colocar o retorno do SQLFetch em uma variável e ver qual o valor que ela retorna, apenas para debug, e verificar se o código retornado indica algum erro - Utilizar o próprio debug da ferramenta, para ver o conteúdo das variáveis passo a passo, as vezes isso lhe indica um caminho do erro
  13. Um buscar em um disco inteiro levaria um tempo bem considerável, eu também partiria da premissa do @Janio Aguiar, onde teria pelo menos um diretório base para diminuir esse range, mas acredito que utilizando a função fListFile você consegue realizar esse tratamento de busca a partir do diretório raiz do disco (https://doc.windev.com/en-US/?3036058&name=flistfile_function) Essa função prevê uma chamada callback padrão para cada arquivo encontrado Acredito que seja esse o caminho caso queira realizar tal procedimento
  14. Não usei o groupware dessa meneira, mas imaginando aqui não deveria ter problema nenhum. De uma conferida nesta tela em que você adiciona o usuário se a tabela "Usuarios_Funcionarios" já está com a conexão da base de dados ativa, se a janela do groupware estiver sendo chamado antes da conexão com a base de dados, pode ser isso que não está lhe dando acesso a tabela. Caso realmente tenha algum macete, algum outro colega com mais experiência logo aparece para lhe auxiliar
  15. Apenas complementando o comentário do @Janio Aguiar nessa questão de usar parâmetros da query, vale a seguintes observação - Não passar o parâmetro é diferente de passá-lo com valor "null" ou "em branco". Como o exemplo do Jânio, observe que ele não chegou a passar o parâmetro, se fosse colocado algo como QRY_Produtos.pDescricao = edt_Descricao QRY_Produtos.pDepartamento = "" OU QRY_Produtos.pDepartamento = Null LooperDisplay(LOOP_Produtos, taReExecuteQuery) é considerado um "AND", portanto procuraria todos os produtos com a descrição igual a pesquisa E com o departamento = 'branco'