2012-03-02 19 views
0

ActiveReports 2(COM for VB6)を使用してレポートを生成するプロジェクトでは、手動で作成したADO Recordsetレコードセットを返さないMultiValueデータベースを使用しています)。ADOのadDateフィールドは、値がNULLのときに「12:00 am」を返します。

データフィールドを日付に設定し、レコードセットタイプをadDateに設定し、nullまたは空白の値を設定すると、ActiveReportsに "12:00 am"が返されます。フィールドにデータがある場合は、正しく表示されます。レコードセットをエクスポートしてExcelにしても、正しく動作しました。

ActiveReportを見た人は誰も以前にこの問題がありますか?

+0

合成レコードセットには 'adDate'の代わりに' adDBTimeStamp'を使用してみてください。 – wqw

答えて

1

AR2の経験はありませんが、私は同じ会社のシャープグリッドコントロールで豊富な経験を持っています。

値をEMPTY oCtrl.value = Emptyに設定するか、空白の文字列oCtrl.value = ""またはoCtrl.value = Nullに設定してみます。これらの値は、レコードセットのデータがロードされた後に設定する必要があります。

0

ADDレコードセットがどのようにadDateタイプを処理し、「nullまたは空白」か空か何もわかりません(これらの値のそれぞれが異なっており、ADO自体も異なって処理される可能性があります)。 null(またはvbNull?)を使用している場合は、レコードセットにフィールドがNULL可能であることを伝える必要があります。 ADO hereにヌルと日付に関する部分的な投稿があります。

ただし、物事のActiveReports側では、レコードセットで検出できる限り、これらの値の表示方法を制御できます。テキストボックスの出力を変更するには、日付を含むコントロールを含むFormat event for the sectionを使用します。

具体的には、Textbox/Field control's DataValue propertyをチェックし、空白または空白の値(レコードセット内の任意の値)の場合は、Field controls' Text propertyを空の文字列に設定します。以下は、あなたのフォーマットイベントのコードがどのように見えるかを示したものです:

Private Sub Detail_Format() 
    ' If date value is null or blank value Then make sure the date textbox displays as empty in the report output: 
    If txtDate.DataValue is Nothing Then 
     txtDate.Text = "" 
    End If 
End Sub 
関連する問題