SQLクエリを受け取ったリストボックスの列
日付 | 2009/01/01 |
---|---|
ID | 09-005 |
バージョン | 11 |
プラットフォーム | Win & Mac |
SQLクエリの結果をリストボックスに取り込む場合、そのリストボックスオブジェクトのプロパティリストであらかじめじゅうぶんな数の列が設定してあれば、そのリストボックスからデータを取り出すこともできます。
注記:じゅうぶんな数の列が設定されていない場合、4Dは動的に新しい列をリストボックスに追加します。4Dが自動的に追加するそのような列に対してこの手法は使用できません。そのようなリストボックスのデータは閲覧専用であり、アクセスはできません。
以下は、リストボックスの内容をタブ区切りファイルに書き出す例題です。
C_LONGINT($Ndx;$Cdx;$SOA;$Cols;$Type_L) C_POINTER($Col_P) C_TIME($Ref_H) ARRAY TEXT($ColNames_aT;0) ARRAY TEXT($HeaderNames_aT;0) ARRAY POINTER($ColVars_aP;0) ARRAY POINTER($HeaderVars_aP;0) ARRAY BOOLEAN($Visible_aB;0) ARRAY POINTER($Styles_aP;0) GET LISTBOX ARRAYS(SQLResult_LB;$ColNames_aT;$HeaderNames_aT;$ColVars_aP; $HeaderVars_aP;$Visible_aB;$Styles_aP) $SOA:=Get number of listbox rows(SQLResult_LB) $Cols:=Count in array($Visible_aB;True) If (($Cols>0) & ($SOA>0)) $Ref_H:=Create document("") If (OK=1) For ($Ndx;1;$SOA) For ($Cdx;1;$Cols) $Col_P:=Get pointer($ColNames_aT{$Cdx}) $Type_L:=Type($Col_P->) Case of : (($Type_L=Text array ) | ($Type_L=String array )) SEND PACKET($Ref_H;$Col_P->{$Ndx}) : ($Type_L=Real array ) SEND PACKET($Ref_H;String($$Col_P->{$$Ndx};"###,###,##0.000")) : (($Type_L=LongInt array ) | ($$Type_L=Integer array )) SEND PACKET($Ref_H;String($$Col_P->{$$Ndx};"###,###,##0")) : ($Type_L=Date array ) SEND PACKET($Ref_H;String($$Col_P->{$$Ndx};Internal date short special )) : ($Type_L=Boolean array ) SEND PACKET($Ref_H;String($$Col_P->{$$Ndx};"True;False")) : ($Type_L=Pointer array ) : ($Type_L=Picture array ) Else End case If ($Cdx<$Cols) SEND PACKET($Ref_H;"\t") Else Case of : (MyOS=Mac OS ) SEND PACKET($Ref_H;"\r") Else SEND PACKET($Ref_H;"\r\n") End case End if End for End for CLOSE DOCUMENT($Ref_H) End if End if