Suggerimenti tecnici – Ecco i 4 suggerimenti di aprile!

Tradotto automaticamente da Deepl

di Add Komoncharoensiri, Direttore dei servizi tecnici di 4D Inc.

In qualità di sviluppatore 4D, è necessario tenersi al passo con i nuovi progressi che 4D sta continuamente fornendo. Oltre ai suggerimenti e ai trucchi forniti dal team del prodotto, i suggerimenti tecnici sono un altro riferimento per imparare alcuni concetti di 4D.

Questo articolo tratta 4 suggerimenti:

  • Come trattare i caratteri jolly SQL come una stringa letterale
  • Ottenere programmaticamente il nome del progetto
  • I metodi preemptive sotto la stessa catena di chiamate devono essere anch’essi preemptive
  • Creare un nuovo documento di View Pro basato su un foglio

Come trattare i caratteri jolly SQL come stringhe letterali?

A differenza di 4D, che ha un solo carattere jolly (“@”), SQL ha più caratteri jolly (ad esempio “%”, “?”, “_”, “#”, ecc.). SQL utilizza i caratteri jolly per sostituire uno o più caratteri in una stringa. Per un elenco dei caratteri jolly di SQL, vedere qui. I caratteri jolly SQL sono utilizzati prevalentemente con l’operatore LIKE e la clausola WHERE per cercare uno schema specifico in una colonna.

Quando si interrogano stringhe contenenti caratteri jolly SQL utilizzando l’operatore WHERE/LIKE in 4D SQL, i caratteri jolly devono essere evasi per essere trattati come caratteri letterali. La clausola ESCAPE è supportata nell’operatore LIKE per indicare il carattere di escape.

Ad esempio, si supponga che i dati da interrogare contengano “Cliente_1”, “Cliente_11”, “Impiegato_1” e “Impiegato_11”. L’obiettivo è cercare tutte le stringhe che terminano con “_1”.

Poiché il trattino basso (“_”) è uno dei caratteri jolly di SQL, deve essere evaso per essere trattato come un carattere letterale. Questo può essere scritto come segue.

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

Il carattere backslash (“\”) viene posto davanti al carattere di sottolineatura (“_”) e il backslash viene definito come carattere di escape. Il carattere di escape fa sì che SQL tratti il carattere seguente come un carattere letterale.

Ottenere programmaticamente il nome del progetto.

Quando si lavora in modalità progetto, a volte è necessario conoscere il nome dell’applicazione del progetto. Per ottenere il nome del progetto in modo programmatico, utilizzare il comando Cartella con la costante cartella del database fk. La proprietà “name” dell’oggetto cartella restituito è il nome del progetto. Ad esempio, se viene creato un progetto con il nome “progetto di esempio”, la riga seguente:

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

$projectName restituirà “progetto esempio” nell’applicazione del progetto.

I metodi preemptive sotto la stessa catena di chiamate devono essere anch’essi preemptive

Tutti i metodi della stessa catena di chiamate devono essere preemptive / thread-safe quando si lavora con un metodo preemptive. Ciò include i metodi tipici di un progetto e i metodi all’interno di una classe, come collection.sort(), dove il primo parametro è il nome di un metodo.

Inoltre, i metodi thread-safe includono condizioni quali:

  • Deve essere abilitata la proprietà “Can be run in preemptive processes” o “indifferent”.
  • Non deve includere plugin thread-unsafe.
  • Non deve utilizzare variabili interprocesso
  • Non deve chiamare comandi relativi all’interfaccia (ad esempio, DIALOG).

Creazione di un nuovo documento VP basato su un foglio

È possibile creare un nuovo documento 4D View Pro basato su un foglio specifico di un altro documento 4D View Pro.

Di seguito è riportato un metodo di utilità che prende come primo parametro il nome dell’area di View Pro e il numero di indice del foglio desiderato per creare un nuovo documento contenente solo il foglio come oggetto:


// 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

Questo consente di estrarre fogli specifici da un documento VP o qualsiasi documento importato in un’area VP come proprio documento VP.

Per concludere

Ecco i nostri 4 suggerimenti e trucchi per il mese di aprile! Spero che abbiate imparato qualcosa di nuovo e che li applicherete nella vostra attività quotidiana di codifica.

Se vi sono piaciuti i suggerimenti qui sopra, ne troverete altri nella Knowledge Base 4D, una libreria di informazioni sulla tecnologia 4D in cui vengono pubblicati costantemente consigli tecnici settimanali e note tecniche mensili. Da anni aiuta i clienti a trovare le risposte per risolvere i loro problemi e continuerà a farlo negli anni a venire.

Add Komoncharoensiri
Add Komoncharoensiri è un membro chiave del team di assistenza tecnica dal 2000. Komoncharoensiri ha iniziato la sua carriera nell'azienda come ingegnere dell'assistenza tecnica, per poi diventare Evangelista 4D nel 2003, quindi Manager delle applicazioni interne nel 2006 e infine Direttore dei servizi tecnici nel 2007. Add ha conseguito una laurea in Scienze informatiche presso la San Jose State University nel 2000. È appassionato di esperienza utente (UX) e programmazione dell'interfaccia utente. Ha contribuito allo sviluppo e alla gestione dei siti web 4D Knowledgebase e 4D Partner Central.