Access使い集合! Ver2.0
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1005078204/
0002デフォルトの名無しさん
NGNGこれからACCESSで開発をはじめようと思っています
フォームは非連結で行う個所があるので、
プログラム上でDB接続の記述をしないければいけないわけですが、
これからやるなら、ADOですよね?
DAOは過去の産物と聞きましたが・・・
皆様の参考意見を聞かせてほしいです。
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG北海道も余計なものに金使ってしまった。
0006デフォルトの名無しさん
NGNG何か面白いこと言ってるんだろうけど、
俺にはよく分からないな。
0007デフォルトの名無しさん
NGNG「行う個所があるので・・・」と書いてるから仕事なんだろうけど
そんな事じゃ先が思いやられるなあ(藁
二つ試してみて開発と配布の両面から自分で判断しなよ。
0008デフォルトの名無しさん
NGNGAirDoかなぁ?
0009デフォルトの名無しさん
NGNGで、ここは何のためのスレだ?厨房向け質問スレなのか?
それくらい書いとけよ、アホ
0010デフォルトの名無しさん
NGNG>>2
「これからやるなら、ADO」は否定しないが、
ACCESSにはDAOこそが相応しいと漏れは思う。
00112
NGNG今回質問したのは、手持ちのVBA参考書には今後はADOと書いてあるのに、
いろんなスレではDAOも使ったほうが・・というのをチラホラ見たからです。
それでどちらを使えばいいのか迷ってしまって。
>>7
仕事です。まぁ、個人企業の社内システム担当者が社内向けに作るシステムというか。
設計から全部自分のみでやっています。
だから、「行う個所」、というか、「行おうと思っている個所」、が正しいですね。
前5年ほどいたソフト会社が、参考書に「ADOいい!」ってあれば、それ使えばいいや!
という会社で、現在もそのスタンスでやってるもので・・・・。
一応ADOで進めてますが、時間があればDAOも試してみます。
>>1
書いて無かったですね。すみません、
まぁ厨向けというか、初心者向け質問スレでいいのでは?
>>10
ありがとうございます。参考にします。
0012デフォルトの名無しさん
NGNGADO使えないんだる
0013デフォルトの名無しさん
NGNG00147
NGNG小規模なLANを考えているなら、ADOがいいと思うよ。
データベース自身を他のもの(SQLServerとか、MYSQLとか)に変えたときでも
対応が楽。
スタンドアロンでワープロ文書みたいに使いたいならDAOのほうが
むしろ楽かもね。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG>>ADO→(略
漏れは拡張性考えてADOだがな。
0019デフォルトの名無しさん
NGNGVBとVCを同じ土俵で勝負させてどっちが優れてる劣ってるって言ってる厨房と同レベルだ。
0020デフォルトの名無しさん
NGNG日付を#で囲まなければなりませんが、
日付をnullでinsertするときはどのように
したらいいのでしょうか?
0021デフォルトの名無しさん
NGNG> insertするときはどのように
> したらいいのでしょうか?
女の同意を得てからinsertする。(同意なしに強引にinsertすると、タイーホされる)
insertする前に、ちゃんと濡れさせておく。前戯なしにいきなりinsertするのは×
- 以上 -
0022デフォルトの名無しさん
NGNGどうなってんの?
0023デフォルトの名無しさん
NGNG> ビジネスソフト板の「ACCESS総合相談所 その5」スレが無くなってるけど
> どうなってんの?
削除依頼出すますた
0024デフォルトの名無しさん
NGNG暇な時いつも見てて自分の知り得る範囲なら
教えてやれてたのに。
0025デフォルトの名無しさん
NGNGつぅかあるべよ
0026デフォルトの名無しさん
NGNGNullとは、「何も入れた事が無い」って事を表す値だって事はわかる?
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGをコード上で再現したいんですが、どうやったら可能なんでしょうか?
というのも今作ってるのはADP+MSDEなので、
オートコレクト機能がないのです;;
何かご存知の方、よろしくです
002920
NGNGDim rs As New ADODB.Recordset
Dim sql as string
sql = "insert into DB1" _
& "(依頼番号, 依頼日)" _
& " values ('" & rs![依頼番号] & "' ,'" & rs![依頼日] & "' );"
のようにするとまず日付は
"#" & rs![依頼日] & "#" のようにして文字列で囲まないと
いけないですよね?
もしレコードに日付のデータが無かったときは
##とかになってエラーが起きるのでレコードに日付がないときは
nullをいれたいというか、フィールドになにもいれたくないんです。
if文やCase文でSQL文の場合わけをすれば解決するかも知れませんが、
日付のフィールドがたくさん合った場合に凄く面倒になるのでなるべ
く日付型のフィールドにnullをいれたいのです
0030デフォルトの名無しさん
NGNG>ここも教えて君が集うスレになるの?
スレ建ての主旨に沿うとそういうことになるなぁ
まぁ>>1が責任もって面倒みりゃいいんだが、逃げたもよう(w
# ム板にまで初心者向けスレはいらないと思う
0031デフォルトの名無しさん
NGNGINSERTするのにSQLじゃなくRecordset使ってみるトカ。
0032デフォルトの名無しさん
NGNG性能下げてどーする。
0033デフォルトの名無しさん
NGNG今のところ、速度は問題になってないんだし。
0034デフォルトの名無しさん
NGNG判定文くらいかけるだろう?
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGいちいちコントロールパネルのODBCで設定するのが
面倒なので自動でやる方法ってありませんか?
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGオートナンバー用意して主キーにしとくぐらいかな。
ま、mdbはユーザーが主キーの設定しなくても、内部で用意しちゃうけど。
それがROWIDと言えなくもない。
004038
NGNGやっぱりそうですか。
別スレで紹介されていた、重複行を削除するSQL
delete from tbl a
where a.rowid > (
select min(b.rowid)
from tbl b
where b.value = a.value
)
って奴をAccessでも使えないかなと思ったのですが。
今回はテーブルレイアウト変更不可という前提があるので無理ポですね。
残念。
0041デフォルトの名無しさん
NGNG個人マスタに会社コードと社員コードの項目があります。
で、社員コードは複数の会社でだぶってしまうことがあるので、
会社コードを社員コードの二つを主キーにしようかと思っているんですが、
二つを主キーにするのって、管理上いかがなものなんでしょうか?
それとも、別途会社コード+社員コードのフィールドを別途設けて
それの項目のみを主キーにしたほうがいいんでしょうか?
ACCESSというより、データベース管理的な質問になってしまいましたが、
詳しい方のアドバイスをヨロシクお願いします。
0042デフォルトの名無しさん
NGNGまぁ、データベースの入門書でも読みなされ。
0043デフォルトの名無しさん
NGNGttp://www.mahoutsukaino.com/ac/ac97/basic/mainkey.htm
0044デフォルトの名無しさん
NGNGACCESSのレポートをそのままの表示で保存(データ化)したいんですが、
何か方法はありますか?
004544
NGNGお騒がせしました
ただ、サブレポートまで出力してくれない・・・(;´Д`)
0046デフォルトの名無しさん
NGNGちなみに環境はwindowsXP + Access2002
GetTickCount()を呼び出すらしいけど、Win32API使ったこと無い。
Access97 + Windows95で問題なく動いていたマクロがXP+2002になったとたん処理が激遅になったので・・
0047デフォルトの名無しさん
NGNGゲーム系のサイトでも当たって見ぃ。
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNGTimer関数じゃだめなのか?
0050デフォルトの名無しさん
NGNGmdb時にはサブフォームを多様してたんですが、
先輩からあまりサブフォームは好ましくないと聞きました。
便利なのでadpでも使おうかなと思ってるんですけど、
あまり多様すると問題があるんでしょうか?
0051デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG見出しをメイン、明細をサブとかあまりお勧めしない。使ってる人多いと思うけど。
つーか気にするならVBで作れよと思った。
0054デフォルトの名無しさん
NGNGVBAロジックにコメントと共に書いてくれるならともかく、プロパティの設定だけで
ゴチャゴチャやられちゃうとメンテする人は地獄を見る可能性高し。
0055デフォルトの名無しさん
NGNGExcelシートにAccessのクエリをエクスポートしたいのですが、
どうすればよろしいでしょうか。
最初は
DoCmd.TransferSpreadsheet acExport, , "クエリ名", FileName, True
でやろうとしていましたが、同じファイル名の同じシートが存在していると
オブジェクトがかち合ってしまいエクスポートできません。
で、CreateObjectを使ってExcelを操作し、
Excel側からAccessのクエリを参照する方法を探しているのですが…。
ご存知の方はいらっしゃいませんでしょうか。
0056デフォルトの名無しさん
NGNGどうしてファイル名を変えようとは思わないの?
0057デフォルトの名無しさん
NGNGドロップダウンリストボックス使えないんですね。
で、いろいろプロパティをいじって代用方法を考えてるんです。
コンボボックスで選択は出来るが
キー入力はできないようにするだけなんですけど…。
うーん。やっぱダメなのかな?
005957
NGNGえーと、ヘルプによると正式な「ドロップダウンリストボックス」なるものは
データアクセスページにしか存在しないとのことです。
それで、キー入力できないようにするにはどうすればいいかと。
Locked/編集ロックをYesにすると選択が出来なくなってしまいますし。
テーブルをレコードソースとして用意し、コンボボックスで選択させ、
そして選択された文字列(textプロパティ)の値を変数に入れる。
というのをやりたいんです。
ものすごーく基本的なとこで躓いてるのはわかるんですが…。
未熟者にご教授くだされ。ちなみに、Access2000です。
006157
NGNGご返事どうもです。
テーブルを直にレコードソースに指定するのではなく
RowSourceTypeを値リストにして、値集合ソースをいじる方向でやってみてるのですが…。
やはりキー入力を受け付けないようにするには何かが足りない…?
すみません、もう少しヒントを下さい。
0062ななし
NGNGオートナンバであるかどうかをチェックしようとしています。DAOを使用しています。
オートナンバーのフィールドのプロパティである
NewValuesプロパティ の Increment はどのようにしたら取得できるのでしょうか?
フィールドのプロパティで、NewValuesプロパティが取得できないので
Attributesプロパティ の、定数 16(dbAutoIncrField)でオートナンバかどうかが
判るかと思ったのですが、オートナンバのフィールドであっても違う値が返って来ます。
オートナンバのプロパティの取得方法について、どなたかお解りになる方
いらっしゃいませんか?
006362
NGNG-----------------------------------------------------------
Function test()
Dim db As DAO.Database, tbf As DAO.TableDef, fld As DAO.Field
Dim pro As DAO.Property, idx As DAO.Index
Set db = CurrentDb()
Set tbf = db.TableDefs("T_test")'1列目にオートナンバ型のフィールド有
'テーブルのフィールドを取得
For Each fld In tbf.Fields
Debug.Print fld.Name
Debug.Print fld.Type
'フィールドのプロパティを取得
For Each pro In fld.Properties
Debug.Print pro.Name
Debug.Print pro.Type
Next pro
'インデックスを取得
For Each idx In tbf.Indexes
Debug.Print idx.Name
Debug.Print idx.Unique
Next idx
Next fld
Set idx = Nothing:Set pro = Nothing
Set tbf = Nothing:Set db = Nothing
End Function
-----------------------------------------------------------
0064デフォルトの名無しさん
NGNG↓こんな感じでできる。
Public Const vbShiftMask As Integer = 1 'キーコードマスク定数。
Public Const vbCtrlMask As Integer = 2 ' 〃
Public Sub cboKyDwn(ByRef KeyCode As Integer, _
ByRef Shift As Integer, _
Optional ByVal blnAlowDelete As Boolean = True)
'blnAlowDelete引数が指定されている場合、[Delete],[BackSpace]による削除を禁止する。
If Not blnAlowDelete And (KeyCode = vbKeyDelete Or KeyCode = vbKeyBack) Then
KeyCode = 0
Exit Sub
End If
'クリップボードへのCopyができるように。
'[Ctrl]+[C], [Ctrl]+[Insert]
If Shift And vbCtrlMask Then
If (KeyCode = vbKeyC) Or (KeyCode = vbKeyInsert) Then Exit Sub
End If
(改行が多過ぎてカキコできないwので、次の発言に続く)
0065デフォルトの名無しさん
NGNG'[↑][↓]、特殊キー以外のキーを入力させない。
Select Case KeyCode
Case vbKeyUp, _
vbKeyDown, _
vbKeyTab, _
vbKeyEscape, _
vbKeyReturn, _
vbKeyF11, _
vbKeyDelete, _
vbKeyPrint, _
vbKeyShift, _
vbKeyBack, _
vbKeyPageUp, _
vbKeyPageDown, _
vbKeyRight, _
vbKeyLeft
Case Else
KeyCode = 0
End Select
End Sub
注意点 :
(1) vbShiftMask、vbCtrlMask はVBにしかない定数。(Accessでも同等の機能を使うため、ユーザー定義)
(2) すべてのキーコードを無効化すると使い勝手が悪くなる。要求仕様に応じて、無効にするキーコードを
適宜選択すること。
006657
NGNG大変ありがとうございます。
勉強させていただきます。
0067デフォルトの名無しさん
NGNG書き忘れたが、>>64のユーザー定義関数は、各コンボボックスの
ComboBox_KeyDown イベントから呼び出す必要がある。
サブクラス化やSendMessageが使用できれば、もっとエグイ技も
使えると思うが、残念ながらAccessのコントロールは、Window
ハンドルを隠蔽しているので、これはムリ。
- 以上 -
0068デフォルトの名無しさん
NGNGデータベース(mdb)が起動された時に
渡されたコマンドラインを取得するにはどうすればいいでしょうか?
また、起動されたファイル名の絶対パスを得るにはどうすればいいでしょうか?
ヘルプをあさったのですが、それらしい記述を見つけることができませんでした。
よろしくお願いします。
0069デフォルトの名無しさん
NGNG>>68
> 渡されたコマンドラインを取得するにはどうすればいいでしょうか?
Command を調べろ。
> また、起動されたファイル名の絶対パスを得るにはどうすればいいでしょうか?
CurrentDb().Name
> ヘルプをあさったのですが、それらしい記述を見つけることができませんでした。
努力不足。氏ね。
それから、バージョンもちゃんと書け。
007068
NGNGありがと。
参考になったよ。
>バージョンもちゃんと
バージョンにも依存するような関数なんだ。
へぇ。
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGこれをAccessVBAから取得することって可能でしょうか?
DaoのTableDefオブジェクトでは無理そうなので
他をあたっていますが見つかりません。
もし取れればテーブル定義ドキュメント楽に作れるんですが・・・
0073デフォルトの名無しさん
NGNGVer2.0では 無理かも(w
0074デフォルトの名無しさん
NGNGhttp://www.ruriplus.com/msaccess/faq/faq_002.html
こちらのでどうですか?
0075デフォルトの名無しさん
NGNG>なんと、Access2000のテーブルには、VBからアクセスできないのである
違うよね?
0076デフォルトの名無しさん
NGNG元記事ではODBCのみでしか接続できないとか書いてるが、
DAOもADOも使える。アホVB厨だろ
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGありがとうです〜!おかげでできました。
これでドキュメントもラクチンです。
0079デフォルトの名無しさん
NGNGDim dbsNorthwind As Database
Dim rstTemp As Recordset
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
Set dbsNorthwind = wrkJet.OpenDatabase("C:\Documents and Settings\XXX\My Documents\幼稚園\YYY.mdb")
Set rstTemp = dbsNorthwind.OpenRecordset("テーブル", dbOpenDynaset, dbReadOnly)
とHelpにあるままやったのですが、最後の行で型が違いますといわれます
VBAから他のDatabaseのレコードセットを取得させたいのですが・・・
他にも色々回避方法はあると思いますがこの形で取得できるやりかたをご教授願いマス
0080デフォルトの名無しさん
NGNG> 最後の行で型が違いますといわれます
Dim rstTemp As Recordset
↓
Dim rstTemp As Object
0081デフォルトの名無しさん
NGNGDim rstTemp As DAO.Recordset
と宣言するか、
または参照設定でDAOをADOより上位にする
008279
NGNGありがとうございます
もうちょっと考えればわかりそうなものですよね、思慮がたりませんでした
精進しマス
0083デフォルトの名無しさん
NGNGDoCmd.OpenTable "テーブル名"
RunCommand acCmdColumnWidth
じゃできませんでした。
■ このスレッドは過去ログ倉庫に格納されています