掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ACCESSレポート出力に関して (ID:147466)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
汚いソースで申し訳ありませんが、以下のようにMySQLから検索したデータをACCESSのテーブルに格納し、 ACCESSのレポートを使って帳票を出力しています。 その際に、当然画面上の条件によって出力されるデータが変わるように作成してありますが、なぜかアクセスのレポート を出力した際に、1回目だけは前の条件で検索した内容が表示されてしまいます。 2回目を実行すると問題なく条件に合致したデータがレポートとして表示されます。 何かキャッシュみたいなのが残ってしまっているのでしょうか。。。。 教えて下さい。 《記述内容》 Dim Connection As New MySqlConnection Dim Command As MySqlCommand Dim DataReader As MySqlDataReader Dim IN_ZAN() As structh_date = Nothing ReDim Preserve IN_ZAN(1000) Dim icount, jcount As Integer icount = 0 jcount = 0 Dim IN_発注日FROM As String Dim IN_発注日TO As String Dim IN_発注先コード As String Dim IN_発注番号FROM As String Dim IN_発注番号TO As String IN_発注日FROM = TXT_発注日FROM.Text IN_発注日TO = TXT_発注日TO.Text IN_発注先コード = TXT_発注先コード.Text IN_発注番号FROM = TXT_発注番号FROM.Text IN_発注番号TO = TXT_発注番号TO.Text '発注日FROMのスラッシュ文字をすべて削除 Dim str1 As String Dim str1_IN_発注日FROM As String str1 = IN_発注日FROM str1_IN_発注日FROM = str1.Replace("/", "") '発注日TOのスラッシュ文字をすべて削除 Dim str2 As String Dim str2_IN_発注日TO As String str2 = IN_発注日TO str2_IN_発注日TO = str2.Replace("/", "") '接続文字列を設定 Connection.ConnectionString = "server=localhost;database=DB_KIKAN;user id=root;password=000000" 'オープン Connection.Open() 'コマンド作成 Command = Connection.CreateCommand 'SQL文作成 Command.CommandText = "SELECT * FROM t_発注データ" Dim SQL1 As String Dim SQL2 As String If str1_IN_発注日FROM <> "" Then If str2_IN_発注日TO <> "" Then SQL2 = " WHERE 発注日付 BETWEEN " + str1_IN_発注日FROM + " AND " + str2_IN_発注日TO Command.CommandText = String.Concat(Command.CommandText, SQL2) Else SQL1 = " WHERE 発注日付 = " + str1_IN_発注日FROM Command.CommandText = String.Concat(Command.CommandText, SQL1) End If Else If IN_発注先コード <> "" Then End If End If 'データリーダーにデータ取得 DataReader = Command.ExecuteReader 'データを全件出力 Do Until Not DataReader.Read If IsDBNull(DataReader.Item("発注番号")) Then IN_ZAN(icount).IN_発注番号 = "" Else IN_ZAN(icount).IN_発注番号 = DataReader.Item("発注番号").ToString End If If IsDBNull(DataReader.Item("発注日付")) Then IN_ZAN(icount).IN_発注日付 = "" Else IN_ZAN(icount).IN_発注日付 = DataReader.Item("発注日付").ToString End If icount = icount + 1 Loop 'データベースファイル名 Dim sfina As String = "C:\sample1.mdb" 'データベースパラメータ Dim strDatbasePara As String Dim ObjCnn As New ADODB.Connection Dim ObjRst As New ADODB.Recordset strDatbasePara = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=" + sfina + ";" + _ "Jet OLEDB:Engine Type=5;" Try ObjCnn.Open(strDatbasePara) ObjRst.Open("table1", ObjCnn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic) 'テーブル全件削除 Do Until ObjRst.EOF ObjRst.Delete() ObjRst.MoveNext() Loop If ObjRst.EOF Then For jcount = 0 To icount - 1 '該当すれば更新します ObjRst.AddNew() ObjRst.Fields("発注番号").Value = IN_ZAN(jcount).IN_発注番号 ObjRst.Fields("発注日付").Value = IN_ZAN(jcount).IN_発注日付 ObjRst.Update() Next End If ObjRst.Close() Catch ex As Exception End Try ObjCnn = Nothing ObjRst = Nothing ' Microsoft Access 9.0 Object Library ac = CreateObject("Access.Application") ' データベースを開く ac.OpenCurrentDatabase("C:\sample1.mdb") ' アプリケーションを表示する ac.Visible = True ' 名前を指定してレポートを開く ac.DoCmd.OpenReport("発注一覧表", 2) 'acViewPreview ' レポートの最大化 ac.DoCmd.Maximize()
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.