パソコン(ソフト)

【Access】ちょこっとTips5選

特定フォームに簡易パスワード設定



全体にパスワードを設定するなら、データベース自体にパスワードを設定する方法はあります。




しかし、ある特定フォームだけにパスワードをかけたい場合があります。


そのフォームが開くときに下記のVBAを設定すれば可能になります。




Private Sub Form_Open(Cancel As Integer)

If IMEStatus <> vbIMEModeOff Then '半角英数入力を固定にする
SendKeys "{kanji}"
End If

    If InputBox("ID初期設定変更のためパスワードを入力してください。 ") <> "hhexp2020" Then
    
        Cancel = True
        MsgBox "パスワードが相違しています。"
    
    Else
    End If

End Sub



ちょこっと特定のフォームにパスワードをかけたい時には便利ですね。




Dlookup関数でちょこっと気を付ける事



Accessってカンマとか、ダブルカンマとか使い方をちょこっと間違えただけでデータを検索してもらえません。

ココがダメ

毎回悩んでは、無駄な時間が過ぎていきます。



今回は、条件の方は、数字と変数の場合に絞ってTipsにしたいと思います。

 

 

=DLookUp("client_name","Vew_client","ID=100")

=DLookUp("ID","client_data","[no]=1")

 

ココに注意

検索条件に何で[ ]が必要な場合と要らない場合がある?

 

よくわかりませんが、noの方は、Accessの方で、勝手にNOという感じに大文字に変更してしまうのです。

IDのほうは、最初から大文字なので問題なかったです。


ちなみに、同じフォーム上にあるテキストボックスに表示された内容を条件にしたときは、

=DLookUp("client_name","Vew_client","ID=client_ID")




client_ID はテキストボックス名ですが、そのままダイレクトに入れても検索条件になるようです。







レコードセットを帳票フォームのレコードソースにする方法



最初に書いておきますが、レコードセットを帳票フォームに設置しても、テキストボックスに値を入れても更新できません。

本当は、

ココがダメ

帳票フォームで一括データ更新がやりたかった!

 

しかし、いろいろと試してみましたが、Accessの仕様だとおもいますが、テキストボックスに入力すらできません。

試しに、クエリーの値などもレコードセットにしてみたりしましたが、同じ(あたりまえですが・・・)でした。

参考

テーブルをそのままレコードソースにすれば済む話ですが、スピードの問題とか、データ量が増えてくるとという将来性を考えるとSqlServerからのVewをつかったり、Accessのパススルークエリを使ったりしてテーブル丸ごとローカルに呼び込む処理などをさせないように工夫をしているのです。

 

それなので、このTipsでは、ただ単にレコードセットにセットしたデータを帳票フォームで見られるだけの物です。

 



Private Sub Form_Open(Cancel As Integer) 
 Dim cn As ADODB.Connection 
 Dim rs As ADODB.Recordset 
 
 'Use the ADO connection that Access uses 
 Set cn = CurrentProject.AccessConnection 
 'Create an instance of the ADO Recordset class, 
 'and set its properties 
 Set rs = New ADODB.Recordset 
 With rs 
 Set .ActiveConnection = cn 
 .Source = "SELECT * FROM ここにテーブル名" 
 .LockType = adLockOptimistic 
 .CursorType = adOpenKeyset 
 .Open 
 End With 
 'Set the form's Recordset property to the ADO recordset 
 Set Me.Recordset = rs 
 Set rs = Nothing 
 Set cn = Nothing 
End Sub

フォームが開くときに、上記のVBAを動かせば、テーブルをレコードセットにして、帳票フォームなどで一覧表示させることが可能になる。

これをやることで、メモリ上にデータを置けるので、表示スピードが速くなるという効果が期待できるのではないかと思う。

帳票フォームで次のレコードの同じテキストボックスへ移動



タブオーダーで、入荷数修正というテキストボックスだけ次のレコードになっても移動させたいケースもある。

タブオーダーだけでは、同じレコードの全てのテキストボックスに移動してしまう。

その方法としては、

まず、


ココがポイント

タブオーダーでその対象のテキストボックスを先頭にしておく



次に、そのテキストボックスの更新後処理に下記のVBAコードを入れておけばOK

 

 

Private Sub arrival_schedule_AfterUpdate()

        On Error Resume Next
        DoCmd.GoToRecord , , acNext
        On Error GoTo 0

End Sub

 

もっと簡単な方法もあるかもしれませんが、とりあえずこんな方法もあるよってことで。



 

 

カレンダーコントロールが簡単になってる

 


カレンダーコントロールってのは、

 

ココがポイント

カレンダー画面から日付の選択ができる機能


です。
以前は、カレンダーコントロールを設置しないとダメだったのですが、最近はものすごく簡単になっています。

というか、書式を「日付」にすればカレンダーコントロールが自動で設置されています。




 

テキストボックス横の小さなカレンダーマークをクリックするとカレンダーが出現します。

手入力してしまえば早いのですが、月末などで31日まであったっけ?なんていうときは便利ですね。






-パソコン(ソフト)
-, , , , , , ,

Translate »

© 2020 PCTips