2024年8月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
無料ブログはココログ

Access

Access2010 パススルークエリ実行時のエラー

パススルークエリを実行したときに、Executeのところで「選択クエリを実行できません」とエラーが出た。UPDATE文なので「選択クエリ」ではないはずだが・・・

どうやらReturnsRecordsプロパティを設定し忘れていたことが原因だった。

Dim sql As String
sql = "UPDATE hoge SET col1 = ''"
Dim qDEF As DAO.QueryDef
Set qDEF = db.CreateQueryDef("")

'↓この一文をわすれていた
qDEF.ReturnsRecords = False

qDEF.Connect = "ODBC;DSN=*****;UID=*****;PWD=********"
qDEF.sql = sql
qDEF.Execute dbFailOnError


C# ハッシュテーブル

参考URL
http://www.atmarkit.co.jp/fdotnet/dotnettips/125hashtable/hashtable.html

Access2000 ブレイクポイントが消えない

モジュールにブレイクポイントを設定して、デバッグなどの作業して、ブレイクポイントを解除。
デバッグせずに実行してみるとなぜか解除したはずのブレイクポイントの所で止まってしまう。
ブレイクポイントは解除されているはずなのに(デフォルト設定だと茶色のラインが入るが白いまま)
という現象になった。

データベースの修復、最適化を何回か試みても状態は同じ。

モジュールの一部をダミーで修正して(改行を入れただけ)、コンパイルをしたらなぜか直った。

コンパイルする前にブレイクポイントは解除しないと駄目なのかな。

Access97 データを更新しても反映されない(続き)

以前(http://tukaenai-pg.cocolog-nifty.com/blog/access/index.html)
のつづき。

やはりキャッシュ関連か。

参考URL
http://www.canalian.com/workshop/access/JetCache.html

Access97 データを更新しても反映されない

テーブルのデータを更新して、そのデータを元にレポートを出力するというプログラムがどうしても、データが更新されていない状態で出力されてしまう現象に陥りました。
レポートは更新される前に状態で出力されてるのでおかしいなぁと思ってテーブルを見るとしっかり更新されてる。レポートをプレビューし直すと更新された内容で出力されます。
リクエリーをしたりいろいろ変更してみたのですがダメ。どうやらデータ更新してすぐレポート出力だと処理が追いついてない!?(あくまで想像)というところまではわかりました。

最終的には5秒ぐらいタイマーで待ったレポート出力することで解決しましたが、かっこわるいなぁ。

Access2000 レポートのページ設定が戻ってしまう

最近はいまさらながら、Access97と2000でのプログラム開発してます・・・

[ACC2000] 最適化するとページ設定が既定値に戻る
http://support.microsoft.com/default.aspx?scid=KB;JA;414227

「データベースの最適化をおこなう前に [ツール] メニューの [オプション] の [全般] タブで 名前の自動修正を行うのチェックをオフにしてください」

この現象はAccess2000だけのようです。

Access テーブルの説明の設定と取得

[コード例]
Dim db As DAO.Database
Dim tblloop As DAO.TableDef
Dim tdf As DAO.TableDef
Dim strTname as string

Set db = CurrentDb()

For Each tblloop In db.TableDefs
    strTname = tblloop.Name
    'システムテーブルは除く
    If Left(strTname, 2) <> "MS" Then
        Set tdf = db.TableDefs(strTname)
        tdf.Properties("Description") = "テーブルの説明"
    End If
Next

Access2000の場合は、参照設定でDAO3.6を追加しておく必要があります。

Access モジュールでリンクテーブルの変更

(コード例)
データベース内のすべてのテーブルのリンク先をC:\hoge.mdbに変更

Dim db As DAO.Database
Dim tblloop As DAO.TableDef
Dim tdf As DAO.TableDef
Dim strTname As String

Set db = CurrentDb()

For Each tblloop In db.TableDefs
    strTname = tblloop.Name
    'システムテーブルは除く
    If Left(strTname, 2) <> "MS" Then
        Set tdf = db.TableDefs(strTname)
        'リンクテーブルの場合
        If tdf.Attributes > 536870911 Then
            With tdf
                .Connect = ";DATABASE=" & "C:\hoge.mdb"
                .RefreshLink
            End With
        End If
    End If
Next tblloop

Access2000の場合は、参照設定でDAO3.6を追加しておく必要があります。

2000年問題

コンピュータの2000年問題からもう6年。はやいもんです。
2000年当時は汎用機やオフコンなどのいわゆるCOBOL系の仕事はしてなかったので(今もできませんが)特に大きな問題はなかったのですが、小さな問題はありました。Access97で日付型の問題で、「コントロールパネルの「地域」の「日付」の「短い形式」の設定に左右される」っていうのがありました。通常はyy/MM/ddとなっているのですが、この設定だと2001/02/05という日付を画面上で入力しプログラムで文字列型にセットすると01/02/05になってしまっていろいろ不具合がおきてしまうというものでした。Accessがインストールされているすべてのパソコンのコントロールパネルの設定をyy/MM/ddからyyyy/MM/ddに変えました。台数がけっこうあったので大変でした。