VB6.0を使って簡単なプログラムを作成しているのですが、
アクセスのレポートをプログラムから使用したいため下の関数を作りました。ところが、今扱いたいDBがパスワードがかかっているため、毎回パスワードを聞かれてしまいます。どうにかパスワードをプログラムから引き渡せないでしょうか?
Public Function usrAccessRpt(strRptName As String, intMode As Integer) As Integer
On Local Error GoTo usrAccessRpt_Err

Dim AccessAp As New Access.Application

'データベースファイルのOPEN
AccessAp.OpenCurrentDatabase App.Path & "\db1.mdb", False

'レポート出力
If intMode = acViewNormal Then
AccessAp.DoCmd.OpenReport strRptName, acViewNormal
AccessAp.CloseCurrentDatabase
Else
AccessAp.DoCmd.Maximize
AccessAp.DoCmd.OpenReport strRptName, acViewPreview
AccessAp.Visible = True
End If

Exit Function

usrAccessRpt_Err:
usrAccessRpt = 1
End Function

このQ&Aに関連する最新のQ&A

A 回答 (1件)

以下の所に情報があるようです



保護された Access データベースを開く場合に
GetObject 関数を使用する例は、Office 2000 Developer CD-ROM の
ODETools\V9\Samples\OPG\Samples\CH04 サブフォルダに含まれる
Automating&IDE.doc の modSetObjVariable モジュールにあります。

http://www.microsoft.com/JAPAN/developer/library …

この回答への補足

回答ありがとうございます。
Office2000がプロフェッショナル版のため、サンプルモジュールを見ることは出来ませんでしたが、ここでの表記内容に関してはりかいできましたm(__)m
ところが、今回のセキュリティーで扱っているパスワードはデータベースパスワードなのですが、起動時オプションで指定できるパスワードがどうやらアカウントパスワードのみのようでした(><;)
ご回答いただいたのにまことに申し訳ありませんが、データベースパスワードという条件で何かよい解決さくはございませんでしょうか・・・(T▽T)

補足日時:2001/09/20 23:03
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

QDim x As Integer = 0

いつもお世話になっております。

只今、本に記載してあるソースコードを手入力しています。
標記のように入力したら、『コンパイルエラー 修正候補:ステートメントの最後』というエラーが出ました。

(1)このエラーは無視してもよいのでしょうか?
(2)そもそも、変数の宣言文の後ろに=0をつけている意味がわかりません。当方VB初心者です。

よろしくお願いいたします。

Aベストアンサー

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsugi.ed.jp/vba4graduate/vba_hensuusyokika.htm
ーーー
定数のConstであればこういう書き方はOK
Sub test01()
Const x As Integer = 0
MsgBox x
End Sub
ーーー
VB.NETでは、OK
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x As Integer = 10
MsgBox(x)
End Sub
ーー
Javaでは可能であるようです
http://msugai.fc2web.com/java/var2.html
ーーーーー
>ろに=0をつけている意味がわかりません
宣言と同時に値を与える=初期化する

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsug...続きを読む

QDocmd.Openreportで範囲印刷をさせたい。access2000

いつも勉強させていただいており誠に感謝しております。

access2000を使用して簡単なプリントができるよう
に作っていたのですが、印刷の範囲選択のところで
悩んでおります。

テーブルはこんな感じです。

ID  会員名  会員住所
001 ああああ  テスト住所
002   いいいい 試験住所
003   うううう  実験住所
004   ええええ  テストアドレス

※以下1000会員ほど続きます。

このテーブルを使って、フォームを作成し
フォーム内で印刷させたい開始ID、終了IDをテキストボックスに入力させて、範囲印刷をさせたいのです。

選択させるIDを入力させるテキストボックスを
kaishi_text、終了させるテキストボックスを
syuuryou_textとする場合
同フォーム内に、ボタンを作成しクリック時の
イベントを作成したいのですがいい方法がわかりません。

どなたかお知恵をお貸し願えますでしょうか?
よろしくお願いいたします。

 

Aベストアンサー

Private Sub コマンド0_Click()

Dim strFilter As String

strFilter = "ID>='" & Me.kaishi_text.Value & "' And ID<='" & Me.syuuryou_text.Value & "'"

DoCmd.OpenReport "テーブル名", acViewPreview, , strFilter

End Sub

IDフィールドが文字列型の場合は上記の方法でよいが、
もし数値型の場合は下記になる

strFilter = "ID>='" & Me.kaishi_text.Value & "' And ID<='" & Me.syuuryou_text.Value & "'"

strFilter = "ID>=" & Me.kaishi_text.Value & " And ID<=" & Me.syuuryou_text.Value

Qマクロで100マス計算! Dim i,j As Integer For i = 2 ToRang

マクロで100マス計算!

Dim i,j As Integer

For i = 2 ToRange(”A1”).End(xlDown).Row
For j=2 To Range(”B1”).End(xlToRight).Column

Cells(i,j).Value = Cells(i,1).Value * Cells(1,j).Value
Next j
Next i
Endsub

上記のように記述しましたが、
iの最終行が2となってしまっていますがなぜこのコードが間違っているのか分からないです。。どなたか教えていただけたら嬉しいです!

Aベストアンサー

確認してはいませんが…


>改行、スペースは実際にはきちんととっていますので気にしないでください
とのことなので、違っているのかもしれませんが、

>For i = 2 ToRange(”A1”).End(xlDown).Row
         ↓
 For i = 2 To Range(”A1”).End(xlDown).Row
で、うまくいきませんか?
100マス(10×10)と最初から決まっているので、範囲は 2 To 11 でも良いように思いますが…

改行、スペースなどが正しくなっているなら、Range(”A1”).End(xlDown).Rowの値が2以下になっている可能性が考えられます。(ということは、A1が空白セル、または、A3が空白セルなどなど・・)
A1が空白セルの場合は、
 For i = 2 To Range(”A2”).End(xlDown).Row
とするか、
 For i = 2 To 11
などとすることで、動作するのではないかと推測します。

QExcel VBAの Functionをワークシートから使用できないようにしたいのですが...

Excel VBAについて質問です。

functionプロシージャを使っている時,一般のマクロからは呼び出せるが,ワークシート関数として使いたくないものがあります。

すなわち,「関数の挿入」ダイアログの「ユーザー定義」のところに不必要な(ワークシート関数として使う意図のないもの)を表示させたくないのですが,そのようなことは可能でしょうか。

今,できるだけsubプロシージャの形にするようにしたりしているのですが,うまい方法があればFunctionも使いたいと思っています。

良い方法があれば教えてください。

Aベストアンサー

モジュールの先頭に、
Option Private Module
と宣言すれば、そのモジュールのプロシージャは、関数一覧やマクロ一覧に表示されなくなります。

単に表示されないだけですから、名前を指定すれば関数としてもマクロとしても呼び出す事が可能です。


人気Q&Aランキング

おすすめ情報