Pular para o conteúdo principal

Postagens

Mostrando postagens de maio, 2012

Postagem em destaque

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️ Olá pessoal, Espero que este post encontre todos vocês bem! É com grande entusiasmo que compartilho que estou expandindo meus serviços como Desenvolvedor AdvPL para novos desafios e colaborações. Com mais de duas décadas de experiência sólida, minha jornada profissional tem sido enriquecedora, com a oportunidade de participar de projetos empolgantes ao longo dos anos. Agora, estou ansioso para trazer minha experiência e habilidades para novas equipes e projetos, trabalhando de forma remota. Minha expertise abrange não apenas AdvPL, mas também outras tecnologias-chave, incluindo JS, SQL, Infraestrutura e Otimização de Processos. Acredito que essa combinação de conhecimentos me permite oferecer soluções abrangentes e eficazes para uma variedade de necessidades de desenvolvimento. Acredito que a tecnologia tem o poder de transformar negócios e impulsionar o sucesso, e estou comprometido em ajudar meus clientes a alcançar seu

BlackTDN :: dbAccess ODBC (Generic) e SQLite

Este final de semana andei “brincando” com SQLite . “Integrei-a” ao dbAccess usando ODBC (Generic) algumas surpresas e configurações específicas a serem feitas. Brinquedo novo. Merece um post e uma nova Classe ADVPL ao estilo BlackTDN: TSQLite. Melhor seria se dbAccess o suportasse “nativamente”. Vejamos até onde consigo brincar. coming soon … []s иαldσ dj

BlackTDN :: TDN Confluence ~ Page Not Found

De fato, o comentário do nosso amigo anônimo está corretíssimo. O TDN “Desconfluenciou-se”. Confluence = Confluência . Mas o Novo TDN não converge , diverge . Uma pena a TOTVS não ter redirecionado/convergido os Links do “Antigo” TDN para o “Novo” TDN. Receberá um grande “PAGE NOT FOUND” se tentar seguir os LINKS do “Antigo” TDN. Usamos, em BlackTDN, muitas referências externas a links do TDN e esses terão que ser revistos (que trabalhão). O mais engraçado de tudo é a imagem: Parece a “convergência de dois rios” mas se olhar mais atentamente ou fixar os olhos perceberá uma “TESOURA” e “TESOURA” faz o quê? SEPARA/DIVERGE.   []s иαldσ dj

BlackTDN :: SoundTrack ~ O Rappa - Minha Alma ( A Paz Que Eu Não Quero )

BlackTDN :: ADVPL ~ Class TFTPClient : Combo IV (O Destrinchar Parte 2)

… Continuação: BlackTDN :: ADVPL ~ Class TFTPClient : Combo III (O Destrinchar Parte 1) . Uma mera formalidade, uma vez que poderia ter criado uma User Function. Ou uma Function U_<f>. User Function f() é traduzida, pelo pré-processador, para  u_f(). Lembrando que uma função retorna valor e uma procedure não (demonstrado como compatibilidade histórica) na realidade, no Protheus não existe a distinção entre Função e Procedure (1).   Observemos o conteúdo do arquivo de cabeçalho “protheus.ch” Algumas diretivas de tradução para o pré-processador encontradas no arquivo de cabeçalho “protheus.ch”. Dentre elas: #xtranslate USER Function <cNome> => Function U_<cNome> Para corroborar a afirmativa em (1) observe o seguinte fragmento de código: O espaço de nomes é o mesmo: Seja uma Function ou uma Procedure. Se tentarmos compilar o código ocorrerá a seguinte exceção: Compilando arquivos...    c:\temp\xprocname.prw...    (no projeto FTPSample) Erro de

BlackTDN :: SoundTrack ~ Red Hot Chili Peppers - Californication

BlackTDN :: Tips & Tricks ~ ADVPL : Embedded SQL – %exp:cExp% TAG

Às vezes podemos ser enganados por sutilizas da linguagem e perder um bom tempo tentando entender o motivo do erro. Observem os códigos abaixo: Embedded SQL :: %exp:cExp% : Exemplo 1 1: #include "protheus.ch" 2: #include "tbiconn.ch" 3:   4: #xtranslate USER PROCEDURE <p> => PROCEDURE U_<p> 5:   6: USER PROCEDURE SqlEmb() 7:   8: Local aLastQuery 9:   10: Local cLike 11: Local cQuery 12: Local cError 13: Local cTCSqlError 14: 15: Local cAlias 16: Local bError 17: Local bErrorBlock 18: 19: Local oError 20:   21: RpcSetType(3) 22: PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01" 23:   24: bError := { |e| oError := e , BREAK(e) } 25: bErrorBlock := ErrorBlock( bError ) 26: 27: cLike := "F%" 28: cAlias := GetNextAlias() 29: