TechTip um eine Datei auf der Festplatte zu erstellen, die nicht-indizierte einmalige Felder anzeigt:
C_LONGINT($maxTableNumber_l;$currentTable_l)
C_LONGINT($maxFieldCount_l;$currentField_l)
C_LONGINT($dontCare_l)
C_BOOLEAN($dontCare_f;$isIndexed_f;$isUnique_f)
C_TEXT($logHeader_t;$logRecord_t;$logfile_t)
C_TEXT($delim_t;$lf_t)
C_TIME($logfile_h)
C_TEXT($tableName_t;$fieldName_t;$note_t)
$delim_t:=Char(Tab)
$lf_t:=Char(Carriage return)+Char(Line feed)
$logHeader_t:="Unique fields without index:"+$lf_t
$logfile_t:=Get 4D folder(Logs folder)+"UniqueNotIndexed.txt"
$logfile_h:=Create document($logfile_t)
If(OK=1)
SEND PACKET($logfile_h;$logHeader_t)
$maxTableNumber_l:=Get last table number
For($currentTable_l;1;$maxTableNumber_l)
If(Is table number valid($currentTable_l))
$maxFieldCount_l:=Get last field number(Table($currentTable_l))
For($currentField_l;1;$maxFieldCount_l)
If(Is field number valid($currentTable_l;$currentField_l))
GET FIELD PROPERTIES($currentTable_l;$currentField_l;$dontCare_l;\
$dontCare_l;$isIndexed_f;$isUnique_f;$dontCare_f)
If(($isUnique_f)&(Not($isIndexed_f)))
$tableName_t:=Table name(Table($currentTable_l))
$fieldName_t:=Field name(Field($currentTable_l;$currentField_l))
$logRecord_t:="["+$tableName_t+"]"+$fieldName_t+$lf_t
SEND PACKET($logfile_h;$logRecord_t)
End if
End if
End for
End if
End for
CLOSE DOCUMENT($logfile_h)
SHOW ON DISK($logfile_t)
End if
TechTip zum Erstellen fehlender Indizes auf Felder, die als einmalig deklariert, aber nicht indiziert sind:
C_LONGINT($maxTableNumber_l;$currentTable_l)
C_LONGINT($maxFieldCount_l;$currentField_l)
C_LONGINT($dontCare_l)
C_BOOLEAN($dontCare_f;$isIndexed_f;$isUnique_f)
C_TEXT($logHeader_t;$logRecord_t;$logfile_t)
C_TEXT($delim_t;$lf_t)
C_TIME($logfile_h)
C_TEXT($tableName_t;$fieldName_t;$note_t)
$maxTableNumber_l:=Get last table number
For($currentTable_l;1;$maxTableNumber_l)
If(Is table number valid($currentTable_l))
$maxFieldCount_l:=Get last field number(Table($currentTable_l))
For($currentField_l;1;$maxFieldCount_l)
If(Is field number valid($currentTable_l;$currentField_l))
GET FIELD PROPERTIES($currentTable_l;$currentField_l;$dontCare_l;\
$dontCare_l;$isIndexed_f;$isUnique_f;$dontCare_f)
If(($isUnique_f)&(Not($isIndexed_f)))
$tablePtr:=Table($currentTable_l)
$fieldPtr:=Field($currentTable_l;$currentField_l)
$tableName_t:=Table name($tablePtr)
$fieldName_t:=Field name($fieldPtr)
$indexName_t:="["+$tableName_t+"]"+$fieldName_t+" indexed for uniqueness (kb#77023)"
ARRAY POINTER($fieldsArray_p;1)
$fieldsArray_p{1}:=$fieldPtr
CREATE INDEX($tablePtr->;$fieldsArray_p;Standard BTree Index;$indexName_t;*)
End if
End if
End for
End if
End for
In einer 32-bit Version ausführen (z.B. vor der Umstellung auf 64 bits).
1 - Übertragen Sie Ihre statischen Bilder in Formularen in die Bildbibliothek:

2 - Konvertieren Sie die übertragenen Bilder in .png oder .jpeg:
C_LONGINT($i;$SOA;$RIS;$PictRef)
C_TEXT($PictName)
C_PICTURE($Pict)
ARRAY LONGINT($aL_PictRef;0)
ARRAY TEXT($aT_PictName;0)
ARRAY TEXT($at_Codecs;0)
PICTURE LIBRARY LIST($aL_PictRef;$aT_PictName)
$SOA:=Size of array($aL_PictRef)
If($SOA>0)
For($i;1;$SOA)
$PictRef:=$aL_PictRef{$i}
$PictName:=$aT_PictName{$i}
GET PICTURE FROM LIBRARY($aL_PictRef{$i};$Pict)
GET PICTURE FORMATS($Pict;$at_Codecs)
For($j;1;Size of array($at_Codecs))
If($at_Codecs{$j}=".pict")
CONVERT PICTURE($Pict;".png")
SET PICTURE TO LIBRARY($Pict;$PictRef;$PictName)
End if
End for
End for
Else
ALERT("Die Bildbiliothek ist leer.")
End if