ein mit
Code: Alles auswählen
USqlStatement():New():Select( {{ 1 }} ):From( {{cAlias, "cAlias"}} ):Build():Query( USQL_RESULT_OBJECTS, @aDaten )
Moderator: Moderatoren
Code: Alles auswählen
USqlStatement():New():Select( {{ 1 }} ):From( {{cAlias, "cAlias"}} ):Build():Query( USQL_RESULT_OBJECTS, @aDaten )
nicht nur dort, in vielen Sprachen gibt es kein Datentyp Logisch, sondern nur LONG = 0 (falsch) oder <> 0 (wahr), was manches einfacher macht bei Fremd DLLs die das meist auch so sehen.Marcus Herz hat geschrieben: ↑Di, 27. Apr 2021 13:11 Gabs dazu nicht mal ein PDR. Kann mich grob errinnern, dass es ein Statement von Alaksa dazu gab. Find ich aber nicht auf die Schnelle. 0/1 für logisch ist in SQL Welt durchaus normal.
Code: Alles auswählen
// Datensaetze einlesen
USqlStatement():New():Select( {{ 1 }} ):From( {{cAlias, "cAlias"}} ):Build():Query( USQL_RESULT_OBJECTS, @aDaten )
// Namen aller Felder des Typs 'L' ermitteln
AEval( aDbStruct, {| aX, nFeld | IIf( aX[ DBS_TYPE ] == 'L', AAdd( aBoolean, aX[ DBS_NAME ]), NIL )})
// Mangel ausgleichen, dass fuer Boolean-Werte 0 und 1 zurueckgegeben werden
IF ! Empty( aBoolean )
aDaten := DaoBoolean( aBoolean, aDaten )
ENDIF
Code: Alles auswählen
FUNCTION DaoBoolean( aBoolean, aDaten )
LOCAL nElement := 0
// In allen iVars/Feldern aus aBoolean eine 1 auf TRUE und eine 0 auf FALSE umsetzen
FOR nElement := 1 TO Len( aDaten )
AEval( aBoolean, {| cFeld | aDaten[ nElement ]:&(cFeld) := IIf( aDaten[ nElement ]:&(cFeld) == 1, TRUE, FALSE )})
NEXT
RETURN( aDaten )