Dicas Técnicas – As 4 Dicas de Abril estão aqui!

Tradução automática de Deepl

por Add Komoncharoensiri, Director de Serviços Técnicos da 4D Inc

Como desenvolvedor 4D, tem de acompanhar os novos avanços 4D é continuamente enviado. Para além de dicas e truques fornecidos pela equipa de produto, as Dicas Técnicas são outra referência para aprender alguns dos conceitos 4D.

Este artigo cobre 4 dicas:

  • Como tratar os caracteres curinga SQL como uma string literal
  • Programmaticamente obter o nome do projecto
  • Os métodos preventivos sob a mesma cadeia de chamadas também devem ser preventivos
  • Criar um novo documento View Pro com base numa Folha

Como Tratar os Caracteres Selvagens SQL como Corda Literal?

Ao contrário do 4D, que tem apenas um wildcard (“@”), SQL tem vários wildcards (ex. “%”, “?”, “_”, “#”, etc.). SQL utiliza caracteres curinga para substituir um ou mais caracteres de uma cadeia. Veja aqui uma lista de caracteres curinga SQL. Os wildcards SQL são predominantemente utilizados com o operador LIKE e a cláusula WHERE para procurar um padrão especificado numa coluna.

Ao procurar por cadeias que contenham caracteres curinga SQL utilizando o operador WHERE/LIKE em SQL 4D, os caracteres curinga têm de ser evitados para serem tratados como caracteres literais. A cláusula ESCAPE é suportada no operador LIKE para indicar o carácter de fuga.

Por exemplo, digamos que os dados a consultar contêm “Customer_1”, “Customer_11”, “Employee_1”, e “Employee_11”. O objectivo é consultar todas as cordas que terminam com “_1”.

Uma vez que o sublinhado (“_”) é um dos caracteres curinga em SQL, deve ser evitado para ser tratado como um carácter literal. Isto pode ser escrito como tal.

ARRAY TEXT($results; 0)
Begin SQL
   SELECT ID from Table_1
   WHERE Field_2 LIKE '%\_1' ESCAPE '\'
   INTO : $results
End SQL

Um carácter de contrabarra (“\”) é colocado em frente do sublinhado (“_”), e depois a contrabarra é definida como o carácter de fuga. O carácter de fuga faz com que o SQL trate o seguinte carácter como um carácter literal.

Programmaticamente obter o nome do projecto.

Quando se trabalha em modo de projecto, por vezes é necessário o nome da aplicação do projecto. Para obter o nome do projecto programmaticamente, utilizar o comando Folder com a constante fk da pasta da base de dados. A propriedade “nome” do objecto da pasta devolvida é o nome do projecto. Por exemplo, dado que um projecto é criado com o nome “projecto de exemplo”, na linha seguinte:

$projectName:=Folder(fk database folder).name

$projectName retornará “projecto de exemplo” na aplicação do projecto.

Os métodos preventivos sob a mesma cadeia de chamadas também devem ser preventivos

Todos os métodos dentro dessa mesma cadeia de chamadas devem também ser preemptivos/seguros quando se trabalha com um método preemptivo. Isto inclui métodos típicos de projecto e métodos dentro de métodos de classe como a colecção.sort() onde o 1º argumento seria um nome de método.

Além disso, os métodos thread-safe incluirão condições como, por exemplo

  • Deve ter a propriedade “Pode ser executado em processos preventivos” ou “indiferente” activada
  • Não deve incluir plugins não seguros para a rosca
  • Não deve utilizar nenhuma variável interprocessada
  • Não deve chamar comandos relacionados com a interface (por exemplo, DIALOGO)

Criação de um novo documento VP com base numa Ficha

É possível criar um novo documento 4D View Pro baseado numa folha específica de outro documento 4D View Pro.

Abaixo está um método utilitário que tomará o nome da área View Pro como primeiro parâmetro e o número de índice da folha desejada para criar um novo documento contendo apenas a folha como um objecto:


// VP_Extract_Sheet
#DECLARE($vpAreaName_t : Text; \
$sheetIdx_l : Integer)\
->$newVP_ob : Object

var $srcVP_ob : Object

$srcVP_ob:=VP Export to object($vpAreaName_t)

$newVP_ob:=OB Copy($srcVP_ob)

$newVP_ob.spreadJS.sheets:=New object( \
VP Get sheet name($vpAreaName_t; $sheetIdx_l); \
$newVP_ob.spreadJS.sheets[VP Get sheet name($vpAreaName_t; $sheetIdx_l)])

$newVP_ob.spreadJS.activeSheetIndex:=0
$newVP_ob.spreadJS.sheetCount:=1

Isto permitirá que folhas específicas de um documento VP ou qualquer documento importado para uma área VP sejam extraídas como o seu próprio documento VP.

Embrulhar

Aí tem, as nossas 4 dicas e truques para Abril! Espero que tenham aprendido algo novo e que os apliquem na vossa codificação diária.

Se gostou das dicas acima, encontrará mais na Base de Conhecimentos 4D, uma biblioteca de informação sobre a tecnologia 4D onde dicas técnicas semanais e técnicas mensais são constantemente publicadas. Tem vindo a ajudar os clientes a encontrar respostas para resolver os seus problemas há anos e continuará a fazê-lo nos próximos anos.

Add Komoncharoensiri
Add Komoncharoensiri tem sido um membro chave da equipa de apoio técnico desde 2000. Komoncharoensiri iniciou a sua carreira na empresa como Engenheiro de Apoio Técnico e depois trabalhou até ao Evangelista 4D em 2003, seguido pelo Gestor de Aplicações Interno em 2006 e depois para Director de Serviços Técnicos em 2007. Add recebeu um BS em Ciências Informáticas da Universidade Estatal de San Jose em 2000. É apaixonado pela experiência do utilizador (UX) e pela programação da interface do utilizador. Ajudou a desenvolver e gerir a Base de Conhecimentos 4D e os sites centrais dos parceiros 4D.