1 :
デフォルトの名無しさん :
02/09/19 11:34
2 :
デフォルトの名無しさん :02/09/19 11:34
というわけで、いきなり質問です これからACCESSで開発をはじめようと思っています フォームは非連結で行う個所があるので、 プログラム上でDB接続の記述をしないければいけないわけですが、 これからやるなら、ADOですよね? DAOは過去の産物と聞きましたが・・・ 皆様の参考意見を聞かせてほしいです。
好きにしろ。
4 :
デフォルトの名無しさん :02/09/19 13:33
おれは、ADO使いだ
5 :
デフォルトの名無しさん :02/09/19 15:09
どう考えてもADOに未来はないだろ。 北海道も余計なものに金使ってしまった。
>>5 何か面白いこと言ってるんだろうけど、
俺にはよく分からないな。
7 :
デフォルトの名無しさん :02/09/19 16:08
>>2 「行う個所があるので・・・」と書いてるから仕事なんだろうけど
そんな事じゃ先が思いやられるなあ(藁
二つ試してみて開発と配布の両面から自分で判断しなよ。
8 :
デフォルトの名無しさん :02/09/19 17:27
>>1 で、ここは何のためのスレだ?厨房向け質問スレなのか?
それくらい書いとけよ、アホ
もともとは単発質問のクソスレだったんだがな・・・
>>2 「これからやるなら、ADO」は否定しないが、
ACCESSにはDAOこそが相応しいと漏れは思う。
どうもです。
今回質問したのは、手持ちのVBA参考書には今後はADOと書いてあるのに、
いろんなスレではDAOも使ったほうが・・というのをチラホラ見たからです。
それでどちらを使えばいいのか迷ってしまって。
>>7
仕事です。まぁ、個人企業の社内システム担当者が社内向けに作るシステムというか。
設計から全部自分のみでやっています。
だから、「行う個所」、というか、「行おうと思っている個所」、が正しいですね。
前5年ほどいたソフト会社が、参考書に「ADOいい!」ってあれば、それ使えばいいや!
という会社で、現在もそのスタンスでやってるもので・・・・。
一応ADOで進めてますが、時間があればDAOも試してみます。
>>1 書いて無かったですね。すみません、
まぁ厨向けというか、初心者向け質問スレでいいのでは?
>>10 ありがとうございます。参考にします。
12 :
デフォルトの名無しさん :02/09/19 18:05
ADOよりDAOの方が良いと逝ってる香具師は ADO使えないんだる
判断基準は 使える/使えない だけなんですか?
>>11 小規模なLANを考えているなら、ADOがいいと思うよ。
データベース自身を他のもの(SQLServerとか、MYSQLとか)に変えたときでも
対応が楽。
スタンドアロンでワープロ文書みたいに使いたいならDAOのほうが
むしろ楽かもね。
ついでに、マルチユーザで使う計画があるならエンジンもMSDEを使っとけ。
あげ
17 :
デフォルトの名無しさん :02/09/27 22:55
age
>>DAO→初心者向け >>ADO→(略 漏れは拡張性考えてADOだがな。
なんだ初心者向けって。 VBとVCを同じ土俵で勝負させてどっちが優れてる劣ってるって言ってる厨房と同レベルだ。
20 :
デフォルトの名無しさん :02/09/30 10:26
sqlで、insert文で日付を扱うときに 日付を#で囲まなければなりませんが、 日付をnullでinsertするときはどのように したらいいのでしょうか?
21 :
デフォルトの名無しさん :02/09/30 11:16
>>20 > insertするときはどのように
> したらいいのでしょうか?
女の同意を得てからinsertする。(同意なしに強引にinsertすると、タイーホされる)
insertする前に、ちゃんと濡れさせておく。前戯なしにいきなりinsertするのは×
- 以上 -
22 :
デフォルトの名無しさん :02/09/30 13:02
ビジネスソフト板の「ACCESS総合相談所 その5」スレが無くなってるけど どうなってんの?
23 :
デフォルトの名無しさん :02/09/30 13:27
>>22 > ビジネスソフト板の「ACCESS総合相談所 その5」スレが無くなってるけど
> どうなってんの?
削除依頼出すますた
24 :
デフォルトの名無しさん :02/09/30 13:48
え! なんでまた 暇な時いつも見てて自分の知り得る範囲なら 教えてやれてたのに。
嘘を嘘と(略 つぅかあるべよ
>20にマジレスしていいのかな・・・ Nullとは、「何も入れた事が無い」って事を表す値だって事はわかる?
27 :
デフォルトの名無しさん :02/09/30 14:10
ここも教えて君が集うスレになるの?
28 :
デフォルトの名無しさん :02/09/30 14:15
ACCESSのフォーム上であるような「住所を入れたらカナを勝手に入力」な機能(オートコレクト?) をコード上で再現したいんですが、どうやったら可能なんでしょうか? というのも今作ってるのはADP+MSDEなので、 オートコレクト機能がないのです;; 何かご存知の方、よろしくです
>>26 Dim rs As New ADODB.Recordset
Dim sql as string
sql = "insert into DB1" _
& "(依頼番号, 依頼日)" _
& " values ('" & rs![依頼番号] & "' ,'" & rs![依頼日] & "' );"
のようにするとまず日付は
"#" & rs![依頼日] & "#" のようにして文字列で囲まないと
いけないですよね?
もしレコードに日付のデータが無かったときは
##とかになってエラーが起きるのでレコードに日付がないときは
nullをいれたいというか、フィールドになにもいれたくないんです。
if文やCase文でSQL文の場合わけをすれば解決するかも知れませんが、
日付のフィールドがたくさん合った場合に凄く面倒になるのでなるべ
く日付型のフィールドにnullをいれたいのです
>>27 >ここも教えて君が集うスレになるの?
スレ建ての主旨に沿うとそういうことになるなぁ
まぁ
>>1 が責任もって面倒みりゃいいんだが、逃げたもよう(w
# ム板にまで初心者向けスレはいらないと思う
>29 INSERTするのにSQLじゃなくRecordset使ってみるトカ。
あくまで一つの案よ。 今のところ、速度は問題になってないんだし。
34 :
デフォルトの名無しさん :02/09/30 22:19
あげ
36 :
デフォルトの名無しさん :02/10/04 16:56
Accessで作ったデータベースをJAVAで使いたいんですが いちいちコントロールパネルのODBCで設定するのが 面倒なので自動でやる方法ってありませんか?
38 :
デフォルトの名無しさん :02/10/05 17:32
Accessで、Oracleのrowidのような機能ってありますか?
>>38 オートナンバー用意して主キーにしとくぐらいかな。
ま、mdbはユーザーが主キーの設定しなくても、内部で用意しちゃうけど。
それがROWIDと言えなくもない。
>39 やっぱりそうですか。 別スレで紹介されていた、重複行を削除するSQL delete from tbl a where a.rowid > ( select min(b.rowid) from tbl b where b.value = a.value ) って奴をAccessでも使えないかなと思ったのですが。 今回はテーブルレイアウト変更不可という前提があるので無理ポですね。 残念。
41 :
デフォルトの名無しさん :02/10/09 17:36
顧客管理DBを作っているんですが、 個人マスタに会社コードと社員コードの項目があります。 で、社員コードは複数の会社でだぶってしまうことがあるので、 会社コードを社員コードの二つを主キーにしようかと思っているんですが、 二つを主キーにするのって、管理上いかがなものなんでしょうか? それとも、別途会社コード+社員コードのフィールドを別途設けて それの項目のみを主キーにしたほうがいいんでしょうか? ACCESSというより、データベース管理的な質問になってしまいましたが、 詳しい方のアドバイスをヨロシクお願いします。
>>41 まぁ、データベースの入門書でも読みなされ。
44 :
デフォルトの名無しさん :02/10/09 18:14
ACCESS2000を使っています。 ACCESSのレポートをそのままの表示で保存(データ化)したいんですが、 何か方法はありますか?
すみません、エクスポートでリッチテキスト出力でできました。 お騒がせしました ただ、サブレポートまで出力してくれない・・・(;´Д`)
AccessのVBAで処理時間をミリ秒まで計測したいのだけど、やり方教えて。 ちなみに環境はwindowsXP + Access2002 GetTickCount()を呼び出すらしいけど、Win32API使ったこと無い。 Access97 + Windows95で問題なく動いていたマクロがXP+2002になったとたん処理が激遅になったので・・
API名まで分かってるならいくらでも探せるだろうがハゲ。 ゲーム系のサイトでも当たって見ぃ。
解決しマスタ。失礼。
50 :
デフォルトの名無しさん :02/10/11 13:49
adpで開発してます。 mdb時にはサブフォームを多様してたんですが、 先輩からあまりサブフォームは好ましくないと聞きました。 便利なのでadpでも使おうかなと思ってるんですけど、 あまり多様すると問題があるんでしょうか?
サブフォームよりも君の漢字能力に問題があると思うな。
>>51 ああ、確かに漢字間違えてますね。失礼しました。
というかただの変換ミスだったんですけど。
同期がとりづらいとか、細かいところ手が届かないとかかな? 見出しをメイン、明細をサブとかあまりお勧めしない。使ってる人多いと思うけど。 つーか気にするならVBで作れよと思った。
>53とも被るが、別モジュールになるから保守が大変って事じゃないのか。 VBAロジックにコメントと共に書いてくれるならともかく、プロパティの設定だけで ゴチャゴチャやられちゃうとメンテする人は地獄を見る可能性高し。
55 :
デフォルトの名無しさん :02/10/17 17:27
お助けください。Access2000でDAO使用です。 ExcelシートにAccessのクエリをエクスポートしたいのですが、 どうすればよろしいでしょうか。 最初は DoCmd.TransferSpreadsheet acExport, , "クエリ名", FileName, True でやろうとしていましたが、同じファイル名の同じシートが存在していると オブジェクトがかち合ってしまいエクスポートできません。 で、CreateObjectを使ってExcelを操作し、 Excel側からAccessのクエリを参照する方法を探しているのですが…。 ご存知の方はいらっしゃいませんでしょうか。
>>55 どうしてファイル名を変えようとは思わないの?
57 :
デフォルトの名無しさん :02/10/20 14:28
Accessってフォーム上で ドロップダウンリストボックス使えないんですね。 で、いろいろプロパティをいじって代用方法を考えてるんです。 コンボボックスで選択は出来るが キー入力はできないようにするだけなんですけど…。 うーん。やっぱダメなのかな?
>>57 漏れはキー入力できないようにしたコンボボックス=ドロップダウンリストボックス
だと思ってた。違うのか?
>>58 えーと、ヘルプによると正式な「ドロップダウンリストボックス」なるものは
データアクセスページにしか存在しないとのことです。
それで、キー入力できないようにするにはどうすればいいかと。
Locked/編集ロックをYesにすると選択が出来なくなってしまいますし。
テーブルをレコードソースとして用意し、コンボボックスで選択させ、
そして選択された文字列(textプロパティ)の値を変数に入れる。
というのをやりたいんです。
ものすごーく基本的なとこで躓いてるのはわかるんですが…。
未熟者にご教授くだされ。ちなみに、Access2000です。
>>59 やっぱり、コンボボックスを貼り付けてプロパティ変えたらリストボックスとして使えるハズ。
SourceTypeとか色々いじくってみて
>>60 ご返事どうもです。
テーブルを直にレコードソースに指定するのではなく
RowSourceTypeを値リストにして、値集合ソースをいじる方向でやってみてるのですが…。
やはりキー入力を受け付けないようにするには何かが足りない…?
すみません、もう少しヒントを下さい。
Access2000で、カレントmdbファイル内にあるテーブルのフィールドが オートナンバであるかどうかをチェックしようとしています。DAOを使用しています。 オートナンバーのフィールドのプロパティである NewValuesプロパティ の Increment はどのようにしたら取得できるのでしょうか? フィールドのプロパティで、NewValuesプロパティが取得できないので Attributesプロパティ の、定数 16(dbAutoIncrField)でオートナンバかどうかが 判るかと思ったのですが、オートナンバのフィールドであっても違う値が返って来ます。 オートナンバのプロパティの取得方法について、どなたかお解りになる方 いらっしゃいませんか?
ちなみに、下記のようにして確認しました。 ----------------------------------------------------------- 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 -----------------------------------------------------------
64 :
デフォルトの名無しさん :02/10/22 12:29
>>57 ↓こんな感じでできる。
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ので、次の発言に続く)
65 :
デフォルトの名無しさん :02/10/22 12:29
>>64 の続き
'[↑][↓]、特殊キー以外のキーを入力させない。
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) すべてのキーコードを無効化すると使い勝手が悪くなる。要求仕様に応じて、無効にするキーコードを
適宜選択すること。
67 :
デフォルトの名無しさん :02/10/22 15:09
>>66 書き忘れたが、
>>64 のユーザー定義関数は、各コンボボックスの
ComboBox_KeyDown イベントから呼び出す必要がある。
サブクラス化やSendMessageが使用できれば、もっとエグイ技も
使えると思うが、残念ながらAccessのコントロールは、Window
ハンドルを隠蔽しているので、これはムリ。
- 以上 -
68 :
デフォルトの名無しさん :02/10/22 20:29
AccessVBAについての質問です。 データベース(mdb)が起動された時に 渡されたコマンドラインを取得するにはどうすればいいでしょうか? また、起動されたファイル名の絶対パスを得るにはどうすればいいでしょうか? ヘルプをあさったのですが、それらしい記述を見つけることができませんでした。 よろしくお願いします。
>>68 > 渡されたコマンドラインを取得するにはどうすればいいでしょうか?
Command を調べろ。
> また、起動されたファイル名の絶対パスを得るにはどうすればいいでしょうか?
CurrentDb().Name
> ヘルプをあさったのですが、それらしい記述を見つけることができませんでした。
努力不足。氏ね。
それから、バージョンもちゃんと書け。
>69 ありがと。 参考になったよ。 >バージョンもちゃんと バージョンにも依存するような関数なんだ。 へぇ。
↑!!!!!!!!!!!!!!!!!!!
72 :
デフォルトの名無しさん :02/10/24 14:56
Access2000のデザインビューで説明欄がありますが、 これをAccessVBAから取得することって可能でしょうか? DaoのTableDefオブジェクトでは無理そうなので 他をあたっていますが見つかりません。 もし取れればテーブル定義ドキュメント楽に作れるんですが・・・
73 :
デフォルトの名無しさん :02/10/24 14:59
>>75 元記事ではODBCのみでしか接続できないとか書いてるが、
DAOもADOも使える。アホVB厨だろ
当時は出来なかったとか...?ンな訳無いか。
78 :
デフォルトの名無しさん :02/10/25 13:28
>>74 ありがとうです〜!おかげでできました。
これでドキュメントもラクチンです。
Dim wrkJet As Workspace Dim 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のレコードセットを取得させたいのですが・・・ 他にも色々回避方法はあると思いますがこの形で取得できるやりかたをご教授願いマス
>>79 > 最後の行で型が違いますといわれます
Dim rstTemp As Recordset
↓
Dim rstTemp As Object
> 最後の行で型が違いますといわれます Dim rstTemp As DAO.Recordset と宣言するか、 または参照設定でDAOをADOより上位にする
>80-81 ありがとうございます もうちょっと考えればわかりそうなものですよね、思慮がたりませんでした 精進しマス
テーブルの最適幅をVBAで自動的に変更する方法おしえてください DoCmd.OpenTable "テーブル名" RunCommand acCmdColumnWidth じゃできませんでした。
>>83 DoCmd.SetWarnings False
DoCmd.DeleteObject acTable,"テーブル名"
DoCmd.SetWarnings True
>>84 はネタ。
テーブルが消えてしまうので要注意!
ADPにて(もちろんテーブルはSQL)Dfirstを使用すると 「OLEオブジェクトのプロパティまたはメソッドにアクセスするときにエラーが発生しました」と出て動いてくれません ADPではDfirstはできないのでしょうか?
>>86 どこで使おうとしてんの?
フォーム、レポート、マクロ、コードなんかだと普通に使えてるけど。
テーブル定義、ビュー、ストアド、関数なんかでは当然使えない。
関数です 関数の中では使えないですね。自分で相応のものを作らないとダメかな
>>88 Select Top 1 .... From .... Order by ....
じゃだめなん?
あげ
ADPで漏れも ADPからmdbのテーブルをODBCを使わずにリンクさせることってできませんか?
Paradoxからへインポートしたいんですけど DoCmd.TransferDatabase acImport, "Paradox 4.x", _ "C:\PLIB.db", acTable, , "PLIB" とすると、 パス'C:\PLIB.db'は正しくありません。パス名に間違いないことと、 ファイルが置かれたサーバーに接続していることを確認してください。 というエラーが出てしまいます。 Paradoxからのインポートは出来ないんでしょうか。
同じテーブル名同士で一つ前のデータと現在のデータを和を求めたいんですが どうすればできるでしょうか? ご指導よろしくお願いします
>93 ニホンゴ、ワカリマスカ?
>93 同じテーブル名同士? アクセスに同じ名前のテーブルは置けない。 よって意味不明。
>94,95 不適切な書き込みですみません。再度書き込ませていただきます。 たとえば、日付、数量、単価、合計を管理しているテーブルで 日付 数量 単価 合計 2002/11/05 4 500 2000 2002/11/06 2 500 3000 2002/11/07 5 500 5500 というふうに表示させたいんです。合計は前日のデータと今持っているデータ の和を求めて表示させいのですが、どうすればいいでしょうか?
「累計」って知ってる?あ、知らない。 んじゃまずこの言葉の意味を調べて。 その後は適当にぐぐってみればいくらでも答えは見つかる。
あげ
>>96 SELECT t1.日付, t1.数量, t1.単価, Sum(t2.合計?) AS 合計
FROM テーブル AS t1, テーブル AS t2
WHERE t2.日付 <= t1.日付
GROUP BY t1.日付, t1.数量, t1.単価
ORDER BY t1.日付;
>97,98 アドバイスのおかげでうまくできました。 ありがとうございます。
age
101 :
デフォルトの名無しさん :02/11/08 00:35
>>34 かなり前の話ですみませんが、私も疑問に思ったのでおしえてください。
日付型にNullを入れるとき判定文で分けてたのですが、
一度日付を登録した後、修正のときにフィールドを消してNullにすると
条件文で登録をかけなくしてしまっているのでデータの修正ができなくなってしまいました。
このような場合はどうしているのですか?
(意味分かっていただけたでしょうか?)
102 :
デフォルトの名無しさん :02/11/08 02:43
帳票フォームでレコードセットをテキストボックス等に レコードの数だけ流し込む(レコードの数だけ行が増える)のは フォームのデータコントロールにクエリー等をセットして、 各テキストボックスのデータコントロールにフィールド名を 指定してやればできますが、これを非連結で処理したいのですが 可能なのでしょうか? もしくは非連結ではなく、DBサーバー上のものを非連結でなく、フィールド指定できるのでしょうか? Access2002では簡単に上記のことができるらしいのですが 開発環境はAccess97なのです。。 ご存じのかたいらっしゃったらご教授願います。
>>102 枠だけ印刷したいとかって意味?
なんか意味不明なんですが・・・。非連結でないと駄目な理由は?
レポートだと、VBAで制御すれば非連結でも可能ですが、
そもそも、非連結で何をしたい?計算のみ?
一番簡単な方法は、ワークのテーブルを作成して項目を連結させた
らいいんじゃないかな。
>>101 日本語がヘタクソ。
小学校からやり直してこい。
[宿題]
つぎのことばのいみをこくごじてんでしらべなさい
・わかりやすい
・具体的
・論理的
日本語もそうだが、それ以前に本人自身何をしたいのか分かってないんじゃねぇの?
>>104 ,105
うまく説明できなくてすみません。まず、下のような形で登録したものを・・・
' 見積ヘッダー部の追加登録(見積日がNullかどうかで処理を分ける。)
If Me.見積日 = "" Or IsNull(Me.見積日) then
strSQL = "INSERT INTO T_見積 (見積番号,見積者,見積日,顧客コード,顧客名,担当,"
strSQL = strSQL & "合計,消費税)"
strSQL = strSQL & " VALUES ('" & Me.見積番号 & "','" & Me.見積者 & "',CONVERT(datetime,'" & Me.見積日 & "'),"
Else
strSQL = "INSERT INTO T_見積 (見積番号,見積者,顧客コード,顧客名,担当,"
strSQL = strSQL & "合計,消費税"
strSQL = strSQL & " VALUES ('" & Me.見積番号 & "','" & Me.見積者 & "'"
End If
strSQL = strSQL & "'" & Me.顧客コード & "', '" & Me.顧客名 & "', '" & Me.担当 & "'"
strSQL = strSQL & "CONVERT(money,'" & Me.合計& "'),CONVERT(money,'" & Me.消費税 & "') ;"
cn.Execute strSQL, , adCmdText
修正するときに下のような形で行うと・・・ ' 見積ヘッダー部の更新登録(見積日がNullかどうかで処理を分ける。) If Me.見積日 = "" Or IsNull(Me.見積日) then strSQL = "UPDATE T_見積" strSQL = strSQL & " SET 見積者 = '" & Me.見積者 & "',見積日 = '" & Me.見積日 & "'," Else strSQL = "UPDATE T_見積" strSQL = strSQL & " SET 見積者 = '" & Me.見積者 & "',見積日 = '" & Me.見積日 & "'," End if strSQL = strSQL & "顧客コード = '" & Me.顧客コード & "',顧客名 = '" & Me.顧客名 & "'," strSQL = strSQL & "担当 = '" & Me.担当 & "',"合計 = CONVERT(money,'" & Me.合計 & "')," strSQL = strSQL & "消費税 = CONVERT(money,'" & Me.消費税 & "')" strSQL = strSQL & " WHERE 見積番号 = '" & Me!見積番号 & "' ;" cn.Execute strSQL, , adCmdText 最初に見積日を入れてINSERTして、変更があったときに見積日を フォーム上で消してUPDATEすると、条件分岐で見積日がNullのときは 更新されないので、当然前に登録した見積日が残ってしまいます。 こういう場合どうすればいいかなぁと・・ (これでも分かってもらえないのだろうか?)
>>103 レスありがとうございます。
説明がかなり変でスミマセンでした。。w
>一番簡単な方法は、ワークのテーブルを作成して項目を連結させた
>らいいんじゃないかな。
上記のでバッチリいけました。
DBサーバーからテーブルデータをクライアントマシンのワークテーブルに持ってきて
帳票フォームでデータ内容を一覧表示することができました。
ありがとうございます。
109 :
デフォルトの名無しさん :02/11/09 11:06
>>106 CONVERT 関数があるということは、DBはSQL Server または MSDE ってこと?
Connection.Execute とか、adCmdText という記述があるってことは、ミドル
ウェアはADO + OLEDB?
その辺も書いといた方がいいんじゃないの?
どうでもええけど、If節とElse節の記述が反対と違うの?
>>107 If節とElse節がおなじだけど、アホちゃうの?
条件分岐の意味わかってる?
(数10行のSQL文の1箇所か2箇所違うだけなのに、If節とElse節に全文コピペ
するアホがようけおるけど、ホンマ鬱陶しいから早死んで欲しいわ・・・)
>>109 まったくおっしゃるとおりでお恥ずかしい・・
' 見積ヘッダー部の追加登録(見積日がNullかどうかで処理を分ける。)
If Me.見積日 = "" Or IsNull(Me.見積日) Then
strSQL = "INSERT INTO T_見積 (見積番号,見積者"
strSQL = strSQL & " VALUES ('" & Me.見積番号 & "','" & Me.見積者 & "'"
Else
strSQL = "INSERT INTO T_見積 (見積番号,見積者,見積日"
strSQL = strSQL & " VALUES ('" & Me.見積番号 & "','" & Me.見積者 & "',CONVERT(datetime,'" & Me.見積日 & "')"
End If
cn.Execute strSQL, , adCmdText
' 見積ヘッダー部の更新登録(見積日がNullかどうかで処理を分ける。)
If Me.見積日 = "" Or IsNull(Me.見積日) Then
strSQL = "UPDATE T_見積"
strSQL = strSQL & " SET 見積者 = '" & Me.見積者 & "'
Else
strSQL = "UPDATE T_見積"
strSQL = strSQL & " SET 見積者 = '" & Me.見積者 & "',見積日 = '" & Me.見積日 & "',"
End if
strSQL = strSQL & " WHERE 見積番号 = '" & Me!見積番号 & "' ;"
cn.Execute strSQL, , adCmdText
すみません、全文コピペじゃなくて、適当にあったコードあわてて直してかいたもんで。
ちなみに、確かにDBはMSDEでミドルウェアはADO+OLEDBです。
条件分岐のことなんで、DB等の説明はあまり関係ないかと思いまして書きませんでした。
ただ、私の言いたかった事は理解していただいたけたみたいですね。
If Me.見積日.Value = "" Or IsNull(Me.見積日.Value) Then strSQL = "UPDATE T_見積" strSQL = strSQL & " SET 見積者 = '" & Me.見積者.Value & "',見積日 = Null," Else strSQL = "UPDATE T_見積" strSQL = strSQL & " SET 見積者 = '" & Me.見積者.Value & "',見積日 = '" & Me.見積日.Value & "'," End if strSQL = strSQL & " WHERE 見積番号 = '" & Me!見積番号 & "' ;" cn.Execute strSQL, , adCmdText Call MsgBox("厨房は逝ってよし!", vbAhoBakkari + vbDemmpa, "(-_-;")
Nzっつー便利な関数があるんだから使えばいいのに。
>>112 私に言ってるんですか?使ってますよ Nz(見積日,"Null")とかやって。
でも結局Null入れても1900/01/01が入るんでいまいちなぁ?と思ってたんですよ。
最終的にNzでやってんですけど、あなたはどうやって使ってるんですか?
>>112-113 日付の場合、ゼロは「特定の値」を意味するため、未入力の扱いとしては
不適切。
日付以外の場合なら問題ないとは思うが。
>>114 ネタですか?
Nz関数はゼロに変換するためだけにあると思ってる?
だめだ... どうしても101がむかつく。なぜだろう。
>101 仕様を見直せ!
>>117 誰ですか?わたしじゃないんですけど・・
120 :
デフォルトの名無しさん :02/11/15 02:50
>>119 ていうか、おまえ何やりたいの?
例でも言いからその判定文書けよ。
nullの意味分かってるの?
121 :
デフォルトの名無しさん :02/11/15 02:54
>>119 ていうか、例でもいいからその判定文書けよ。
何を判定したいのかわからん。nullの意味わかってるの?
>>119 問題、次の違いを簡潔に述べよ。
1.Null値 と Empty値
2. Nz(見積日, "Null") と Nz(見積日, Null)
3. "SET 見積日 = Null" と "SET 見積日 = 'Null'"
>>120 ,121
おまえにおまえと言われる筋合いはない。ハゲ。スレをよく見れ。
>>122 知らん。つーか、もう解決してるからいい。
124 :
デフォルトの名無しさん :02/11/17 00:50
会社の方で仕事依頼がありましてちょっとお聞きしたいのですが、 1レコードに100のフィールドがあり、それを10000レコード入力するとした場合、 入力ミスが発生しないようにするにはどのようにするのが効果的なのでしょうか? 会社の方からは1つのフィールドに対して同じ内容のものを2回ずつ入力させる ようにしたらどうかと言われているのですが、確かにこの方法ならミスは ほとんどなくなりますが実質20000レコード入力している ようなものなので非常に時間がもったいないと思うのです。 しかもこれは入力者に多大なストレスになりますし…… なにかいい方法はないでしょうか?
>>124 入力するのが何の規則性もない32ビットの数値データとかなら、2回ずつ入力してもらうしかないだろうな。
ちょっとでも規則性があるならその規則性を利用してミスを防ぎ入力を支援するのが普通君の仕事だ。
>>124 Access の問題ではない。
UIはどうあるべきか、フールプルーフな仕組みはどうあるべきか、という話題。
127 :
デフォルトの名無しさん :02/11/18 14:04
>>124 同じ内容を2回ずつ入力させるようにしたらと会社が言っているのならそうすれば?
但し、同じヤツに2回入力させたってダメだね。別の人間2人以上に入力させて
データをコンペアすべきだね。
でも、2回入力しようが10回入力しようが、ミスが起る可能性はゼロにはできない。
入力されたデータを正しく検証する方法をまず考えるべきだ。
データが正しく検証できるなら、1回で入力して、エラーを訂正してクリーンデータを
作ればそれですむ。逆にデータが検証できないなら、何回入力しようが、それは
「確立的にエラーが少ない筈」なデータというだけで、正しい事にはならない。
>1レコードに100のフィールドがあり、
この時点で仕様が間違っているニオイがぷんぷんだ(笑)
>なにかいい方法はないでしょうか?
入力作業を外注に出す。もちろんミスがあったら巨額損害賠償な契約書を作成。
128 :
デフォルトの名無しさん :02/11/18 17:20
ちょいと聞いてみたい事なんだが、Accessって他DBより劣ってる部分って何がある? どこぞのエンジニアが「遅すぎる」「データ壊れやすい」とかのたまってたけど、 そんなに馬鹿DBなの?
>>128 今更こんなところで訊くまでもない、既知な問題。
無名ベンダのマイナな製品ならともかく、Googleででも調べれば、情報は
いくらでも転がっている。
ごめん。聞き方が全然だめだった。
「皆はそんなに馬鹿DBだと思ってる?」
の方を聞いてみたかったのだ。
>>129 すまん。
>>129 具体性に欠けるね。スマソ
翔泳社のWEBサイトにVBマガジン(現・.NETマガジン)のバックナンバー
記事の一部が公開されており、その中に、秋月巌氏の連載記事もある
はず。
それを読めば、参考になるのでは?
>128 今となってはJetは有能なDBであるとは思わない。 が、救いようの無いものであればこんなに普及せんよ。 速度に関しては、ローカルで使う限りは早い。あたりまえだが。 データ破損もシングルユーザならそうそう発生しない。 スタンドアロン・シングルユーザでマターリ使うならお気軽でいいと思うけど。
Jetってなんですか? 初心者的質問ですみません
134 :
デフォルトの名無しさん :02/11/19 19:41
>>133 検索エンジンってなんですか?
初心者いじめ的嫌がらせですみません
>>133 アクセス形式のDBのなまえー、「mdb形式」とか言った方が通りがよさそうなのにMSはなぜかそう呼んでる・・・
JETでMDBに接続する
137 :
デフォルトの名無しさん :02/11/19 23:06
>>135 おまえ馬鹿か?
ACCESSはDBMSか?
アクセス形式?なんだそれ。
初心者以下だな。
マ板でこんな書き込みを見るとは。
ネタな事を祈るよ。
>>138 はあ、勉強になりました
要は DAO は Jet を利用して DB にアクセスする為の機能を提供するものだと、
そういうことになるんですかね
だとしたら ADO は
Jet 等を使わずに直に DB にアクセスするから高速だということか
ブッブー
>139 DBエンジンとユーザアプリケーションの間にいるのがDAOやADOだ。 ってかMDB扱うのであればDAOの方が早いんじゃなかったっけ?
>>141 ソダネ
DAOは早いけどACCESS依存
ADOは遅い(といってもDAOより少し?)けど、汎用性があり、いろんなDBにつなぎやすい
と認識してます。
違ったらスマソ。
俺はADOが便利なので、もっぱらそれをつかっちゃってますが。
>>142 DAOはレガシーだが、ユーザ人口が多過ぎて、MSの立場としては捨てるに捨てられない(泣)心境。
DataBaseEngine という表記とは裏腹にその実態はDLL。 ま、ISAM Library の類かな?(とか言うと石を投げられそうだが)
>>143 売り物として開発するのに、DAOが適切な選択肢かどうかはさておき、操作性が高く、コーディングも
直感的にわかりやすく記述が容易なので、プログラミング入門者の教育には最適。
なんだ、みんなDAOマンセーじゃんw
>146 つか、ネットの事例もDAOが多いし。
SQLを実行する手続きを簡略化するため(?)DAOと比べADOのメソッドは 若干その数が減っている DAOで実現できた処理がADOでは不可能になっちゃったなんてケースに 遭遇したことってある? ・・・と、さりげなく誘導尋問してみる
まぁ、2000からはADOが標準になってるらしいけど・・・・ 参考書なんかみてもADOから解説してるものが多いよね。
>>148 初期のADO(2.1頃)って、Recordset.GetRowsメソッド(Variant型の配列を返す)がなかったのでは?
今は実装されてるけど。
>>148 定義関係だなあ、ADOXつかえばいいんだろうけど
MDBならDAO使うし、他のRDBMSならSQL投げるし
152 :
デフォルトの名無しさん :02/11/24 00:44
今までMDBでPrtDevModeを使ってレポートの設定をしていたんですが、 MDEでもSetPrinter()APIで、用紙サイズの変更、用紙の向き等を変更できますか?
PrtDevModeを設定出来なくなるので無理 Access2002ならPrinterオブジェクトで変更可 つーか環境書け
155 :
デフォルトの名無しさん :02/11/24 14:19
レコードごとに画像やHTMLを保存したいのですが、
どうすればいいのでしょうか?
とりあえず思いついたのがmdbの横にディレクトリを作って
そこへ保存。
ハイパーリンク型フィールドへ
画像やHTMLのindexへの相対パスを入れる。
という方法なのですが、
相対パスの文字列を入れても
実際ジャンプする時には
先頭に自動的に「
http:// 」を入れられてしまい、上手く飛べません。
絶対パスを使いたくない理由は他の環境などへ持っていった時に
飛べなくなるからです。
いい方法あれば教えてもらえませんか?
アクセス2000です。
ハイパーリンク型である必要がどこにある?
>156 ハイパーリンク型にすると 自動でリンクを貼ってくれると思ったからです。 テキスト型でも構いませんが、見る時 即座に画像などを表示するのが難しいのでは?と思ったからです。 ハイパーリンク型にこだわる必要はないです。 いい案あればください。
>157 どう動くのか予想がつきにくいハイパーリンク型に比べ、必要に応じてアプリを Shellしてやればいいだけなのだから、String型でパス文字列を持っておくほうが制御が楽でわ?
わからないので教えてください。 下のように業者番号ごとに累計して画面に表示しようと思うのですが 業者のレコードに関係なくすべての業者の累計になってしまいます。 業者ごとに累計させたいのですが、どうしたらいいでしょうか? レコード1 1 株式会社 壱 日付 数量 単価 合計 2002/11/05 4 500 2000 2002/11/06 2 500 3000 2002/11/07 5 500 5500 レコード2 1 株式会社 弐 日付 数量 単価 合計 2002/11/11 4 500 7500 2002/11/16 6 500 10500 2002/11/17 5 500 13000
>>159 どういう作りになってるのかわからないのでコメントのしようがない。
ただもしその「レコード」がテーブル構造そのままだとしたら
正規化から始めんとだめでしょう。
>159 まずは自分なりに考えてみれ。 なんでもかんでもSQL一発でやろうとするな。
>158 何型でもかまいません。 テキスト型でもいいです。 一番聞きたいのは レコード単位で画像やHTMLファイルなどの ファイルを管理する必要がある時、 最適を思われる方法を知りたいのです。 アドバイスいただけませんか? みなさんだったらどうしますか?
>>163 先日、ビジネスソフト板で同じようなことを聞いたら
>>158 の方法でいいといわれましたよ
systemテーブルのような物をつくってそこにデータディレクトリへの絶対パスを、
各レコードにそこからのパスを持たせてviewerへsendmessageさせてます。データはjpegイメージです
同じようにShellExcuteさせればいいのでは?
で自分の質問ですが、 非連結の帳票ビューを使って、VBAでRecordSet、ControlSourceを動的に生成(WHERE区の置き換え)させているのですが、 フォームオープン時に一項目だけ空の帳票項目が表示されてしまいます。 そこで、OpenイベントハンドラでRecordSetに SELECT 〜 WHERE autoNumID = 0 として空のレコードセットを指定して上手く動いている様ですが、もう少しスマートな方法はないのでしょうか? それと勝手に前提としてますが、オートナンバーって絶対に非ゼロなのでしょうか? よろしくpねがいします。
↑×RecordSet ○RecordSource
オートナンバーフィールドの値は、"テーブルにレコードが追加される時点で 自動的に固有の数値が格納される"仕様。 書き込まれる値 = 連続値、乱数、レプリケーションIDのいずれか。 オートナンバーフィールドの初期値に"初期値<0"が設定できれば 0スタートが可能だわな。 オートナンバーのデータ型がunsignedだったら無理だけど。 オートナンバーフィールドを"-1"でリセットできるか確認してみれば 答えは自ずと導きだされるんじゃねえの?
168 :
デフォルトの名無しさん :02/11/27 15:27
プログラム内で、現在連結フォーム上に表示されているレコードが何件目なのか取得するには、 なんて関数(メソッド?)を使えばいいでしょうか? 連結フォーム上では下に表示されている数です 5/10 みたいな感じで <10件あるうちの5件目 よろしくお願いします。
169 :
デフォルトの名無しさん :02/11/27 18:33
>>168 バージョンを明記していないんで Access2002 を前提にして書くけど
"カレント"をキーワードにヘルプを引くと"CurrentRecordプロパティ"
なるものが見つかるけどね。
170 :
sakura :02/11/27 20:48
教えてください 2000を使っています。 半角全角混合のtxtファイルのインポート(リンク)をしたいのですが、 全角文字のトコロで参ってます。 ”あ”や”A”は2バイトで認識してくれるのに ”☆”や”×”などは1バイトで認識しちゃいます。 で、以降の項目で桁ずれが起きてしまいます。 何とか上手い方法はありませんか? おねがいします。 おわり。
>>170 まあバイト数調べてるとこのソースでも出せや。
>167 うーん。とりあえず自分が管理するので非ゼロでいきます。 デフォルトでなにかSELECTする(例えば今日の日付とか)仕組みのほうがいいかもしれませんね。 ありがとう。
>>172 オートナンバーの初期値は'1'からだね。(テーブル生成時/テーブル最適化による初期化時)
ただし、SQL(Insert文)でオートナンバーフィールドに値'0'を追加できるので、"絶対に
0である"保証はない。ま、意図的に混入させない限り、オートナンバーフィールドに値'0'を
持つレコードが存在することはないと考えていいと思うですよ。
>>170 ?LenB(StrConv("☆×", vbFromUnicode))
>164 アドバイスありがとうございます。 参考になりました。 そのように実装したいと思います。 感謝してます。
176 :
アクセス太郎 :02/11/30 16:44
以下のようなソフトウェアとアドバイスを探しています。 <1つ目> あらかじめ作成されたテーブルに、データ(レコード)を次々と入力・編集(作成)するWebブラウザ上で動作するソフトウェアです。 出来れば、レコードの一覧表も表示されて、その中から選択して編集するという形式のほうが好ましいです。 開発ソフトウェアにVC++を採用して、DAOを用いて、一つずつ作成・編集するソフトウェアは自力で作成しました。 しかしながら、それをブラウザ上で起動させるように改良させるということが出来ません。 ActiveXを利用しようとしたのですが、それだとCDaoRecordViewクラスが使用できないため困っています。 (ActiveXを利用するとViewクラスをCOleControlクラスとリンクできないため困っています) 何か良いアドバイスをください。 <2つ目> .mdbファイルを自動で、レコードを一覧表で表示する.htmファイルに変換するソフトウェア。 ユーザは対象となる.mdbファイルのパスを指定するだけで、.htmファイルに変換するソフトウェアはないでしょうか。 アドバイスの程、よろしくお願いします。
>177 Access2000と仮定して・・・ 1)「データアクセスページ」でヘルプを検索 2)「エクスポート」でヘルプを検索 あとAccessのバージョン書けや。
179 :
デフォルトの名無しさん :02/12/04 14:49
>>177 設計段階での情報収集と知識獲得って大事です。
1>ADOとDAOについて調べるとよい。
2>当てにはできんが、AC2KからDAPなるものも加わった。
ところで、なにゆえHTMLで表示せにゃならんのか。
そーゆー大きなところを悩み苦しむときにスキルはアップする。
180 :
デフォルトの名無しさん :02/12/04 18:24
全然お助け方向の回答じゃない。 まず、 とりあえず、DAOでアクセスできて、 クライアントアプリはできてるんだろ? もし、今まで作成したアプリ(のコード)を 活かしたいのなら、今までのコードを 変更して、VCでcgiを作りなさい。 データを表示、編集できるように標準出力に html形式で出力すればOK。 更新もhtmlのフォームからpostし、それを 環境変数から編集データを持ってこればいい。 まぁ、その辺もぐぐればざくざくでてくる。 WEBでACCESSのDBアプリをつくるなら IIS+ASPで作るのが一番簡単。 多分、今から(0から)作り始めても、 同じくらいの工数でできると思う。 下手したらこっちの方がはやい。
みなさん、レスありがとうございます。 >ところで、なにゆえHTMLで表示せにゃならんのか。 先生がそう望むからです(悲笑) 使用しているAccessのバージョンは、Access2000です。 言い忘れてごめんなさい。 僕は皆さんが挙げられたキーワード、IIS,ASP,cgiについて調べてみます。 光が見えてきて、少しホッとしています。 178〜180さん、どうもありがとう。 そしてこれからも、 引き続き何かアドバイスお願いします。
このようなクラスをVBで定義 public withevents txtHoge as TextBox private sub txtHoge_KeyPress... txtHogeにAccessのテキストボックスを入れて、 VBのクラスでテキストボックスのイベントを取得したいのですが できないのでしょうか。
参照設定にAccessApplicationとかを追加しないと型が合わないんじゃない
あげ
廃れてるな。
VB6のGrid系コントロール使っても大丈夫?
階層フレキシブルは充分いけたぞ Ac97から
だいじょぶです
189 :
デフォルトの名無しさん :02/12/13 09:42
すみません。教えて下さい。 ACCESS2000のVBAで、 ?"1"="1" が True になってしまいます。同様に英字・カタカナも同一視されるんですが、 なにかいい方法ありませんか?
190 :
デフォルトの名無しさん :02/12/13 12:06
ACCESS+SQLServerでマスタメンテナンス画面においてトランザクション処理をしようと思っているのですが、 今考えている手法として、 1.メンテ画面を開くと同時に、サーバ上のデータをローカルにあるワークテーブルにコピー 2.ワークテーブルをメンテナンス 3.ワークテーブルをマスタに反映 という手法を取ろうとおもっています。 ですが、参考書をみたら、 BeginTransやCommitTransを使って行うとあります。 内容を良く見たら,データのコピーをローカルにコピーするか、内部変数上にもってくるかの違いだけらしいのですが・・・ もしくは、上記のワークテーブルを使う手法で、3番のマスタに反映時にこのBeginTrans等をつかってトランザクション処理を するとよいのでしょうか? 見当違いの質問かもしれませんが、詳しい方、よろしくお願いします。
>>189 VBAだけなら、モジュール宣言部の
Option Compare Database を外せばいい。
または文字列比較にStrCompを使うようにする。
>>190 AccessのバージョンとSQLServerへの接続手段を書いた方がいいかもね。
191さん、どうもありがとうございました。 モジュールの先頭にそんなヒントが隠されていたとは...(恥)
>>192 ああ、すみません、そうでしたね。
OSはWin2k
Accessは2000です
SQLServerへはADOをつかって接続しています
PROVIDER=SQLOLEDB.1;
PASSWORD=user1;
PERSIST SECURITY INFO=TRUE;
USER ID=user1;
INITIAL CATALOG=xxdatabase;
DATA SOURCE=SQLSvr;
こんな文字列を渡して接続しています。
よろしくお願いします。
195 :
デフォルトの名無しさん :02/12/13 16:16
>>190 途中でコケて困るのは3番だけかな。
ってことで、トランザクション処理が必要なのは3番!!!どーん!
>>190 ・シングルユーザ環境なんで同時更新は有り得ない、かつ、SQLServerへの
書き込み結果が正しく反映されることを期待する
・新規データのバッチ登録
空のワークテーブルを用意 -> 新規データの追加 -> SQLServerに一括で追加
以上の様な目的なら、その考え方でかまわないんじゃないでしょうか
マルチユーザ環境、かつ、同時更新が起こりうるような場合は
1.トランザクション開始の宣言
2.データの読み込み
3.データ変更作業
4.データの書き込み
5.コミットorロールバックでトランザクションの終了
みたいに処理を封じ込めるってのがセオリーじゃないかなぁ・・・?
>>195-196 回答有難うございます。
一つ忘れていました。
ワークテーブルには、追加、更新、削除の三つのフラグがあり、
クライアント側でそれぞれの処理を行うと各フラグたたちます。
3番の反映時には、各フラグが立っているレコードのみを抽出し、それぞれの処理を行う方式です。
ちなみに、同一レコードの同時更新はありえません。
これも踏まえてアドバイスなぞありましたら、お願いします。
今いろいろ書籍とかネットを調べていたんですが・・・ ローカルテーブルを使ってデータを更新する方法とBeginTransを使う方法って、 物理テーブルを使うか、サーバ内のメモリ領域を使うか、って違いだけなのかな・・・・? 間違ってます?
>198 あのさ、まずBeginTransやCommitTransが何なのかって所からしっかりヘルプ読んだほうがいいよ。 チャラチャラしたHowTo本じゃなくて、しっかりとしたデータベースの基礎が書かれてるヤツな。 そうすればそんな発想は出てこないはず。 で、>196が指摘してるようにシングルユーザなのかマルチユーザなのか、 マルチユーザなら同時更新は起こりうるのか、って所をはっきりさせてくれ。
>>199 マルチユーザーで、
同一レコードに対しての同時更新は起りえません。同一テーブルならもちろん起りますが
とりあえずデータベースの専門書調べてみます。あとヘルプも。
4年前にORACLEでやったんですけどね・・・すっかり忘れてしまった・・(涙)
その時にはBeginTransやCommitTransを使ったんですけど。
しばらく現役はなれていたんでもう・・・・
201 :
初歩的な質問で申し訳ないです :02/12/16 20:40
ACCESS以外でやってきた時は上手く言っていた事が ACCESSだと何故だか上手く行かなくて困っています。 ORDER BY 句で下記の様にソートしたいのですが 1 2 A A a a 何故だか下記のようにソートされてしまいます。 1 2 A a A a Option Compareとかでバイナリ指定しても駄目だし StrCompとかだとソートしたいだけなのに、抽出を行う事になってしまうし…
>>202 早速有難うございます。実は…
そのURLは、私もGoogleで見つけていましたが、採用しませんでした。
何故なら6000行程を処理するのですが、ソートすべき列がcharの12桁あり
少々遅くなり過ぎるので、なるべく簡潔なロジックにしたかったものですから…
…う〜ん、やはりソレしか方法は無いのでしょうか
他の方法を御存知の方いらっしゃいましたら、御教示頂ければ幸いです。
>>203 16進ASCIIコードの文字列にする関数を作ればいいじゃん。
その程度のデータ量なら一瞬で終わるぞ。
>>204 有難うございます。
やはりSQLメインでは出来ませんか…
とりあえず関数作って処理時間を計測してみます。
わ、凄い。1万件で3秒でした。(CPU=PW1.6GHz) 有難うございました。
ウケル
Accessの非連結フォームでADOとフォームのコントロール 関連付けるためのクラス作ったんですが、 似たようなの作った人いませんか?
>>206 それはちょっと遅すぎる気もするね。
俺がローカルなmdbで試してみた限りでは
Celeron533MHzでも 5000件*15文字程度で約1秒だった。
Adpを使用してSQLServerとやりとりしているのですがSQL文中でIifなどの関数が使えず困っています。 SQLServer側でユーザ定義関数を作ろうかと思ったのですがさっぱりです 何かいい方法はないでしょうか?
212 :
デフォルトの名無しさん :02/12/18 20:13
Access97を使ってバーコード128を印刷したいんですが、 バーコードの下の数字は消したいんです。 プロパティあれこれいじってるんですが、どなたか方法知ってたら 教えてください。
>211 case when
214 :
名無しさん(新規) :02/12/21 02:07
HTMLページをACCESSで読み込む必要性がわからん。
>>215 必要性とか別にいいじゃん。何で技術を聞いているのに
そういう能書きたれるのかな。
お前もpins'sの知ったか厨房か?
>>214 Accessのその機能はSMBで認識できるファイル
簡単にいうとc:\***とか\\マシン名\で開く
ことができるhtmlファイルのみ。
だからPCの中のファイルは成功する。
説明のページのIE画像もマイコンピュータの
絵がついているだろ。あれはローカルファイルの証拠。
ファイルにアクセスするプロトコルが違うわけよ。
逆のexportも同じ。
217 :
デフォルトの名無しさん :02/12/21 13:56
ACCESSのVBAからEXCELを起動し、そこにデータを貼り付けるという方法で、 既存のEXCELファイルをOpenする方法はヘルプにもあり分かったのですが、 新規でEXCELを起動する方法がわかりません。 どのような記述をすればいいですか? HELPの探し方が悪いのかな・・? ちなみに Dim objxl As New Excel.Application というのを変数で作っています。
>>217 起動するだけならShellでいいのでは?
>>217 dim wb as excel.workbook
set wb = objxl.workbooks.add
しろうとは1-2-3でも使ってなさいってこった(w
サーキットの狼
>>219 起動できましたー
有難うございました!
216さん、レスありがとうございます。
う〜ん、一応ftpサーバーにはアクセスできて、サーバーの中の
フォルダとかは覗けるんですけどね。
http://www.akj.co.jp/aug/qa/ans0001-0050/1153.html の報告のように・・・。
つまり、Accessからftpサーバーにログインできているにも
かかわらずインポートができないんです。
インポートも出来ないのにログインだけ出来るというのは
腑に落ちません。それではログインする意味がないですから。
ヘルプをどう読んでも出来るようにしか思えないし。
もし、興味がおありでしたら実験して見て下さい。(皆さんも)
ヘルプのキーワードから"html"と打つとログインの方法とか詳しく
出てきます。
>>215 HTMLページをACCESSで読み込む必要性ですか?
私の場合は、あるサイトの情報をVBAで自動的に読み込んでテーブルに
蓄積したりその情報を元に処理をしたいからですね。ビジネス用途です。
そのためにもまずは手動でも何でもインポートに成功する必要がある
んですが、それが出来ず困っています。
ちなみにエクセルでは簡単にインポート出来ました。
>>223 ごめん、漏れの認識不足ダターヨ。
あやまるよ。
あとは、ftpのログインユーザで
インポート対象のhtmlファイルの
読み込み権限はあるのか調べて見れ。
>>225 読み込み権限は確認しましたがやはり問題ありません。
普通にブラウザでも表示されてますし。
http://www.akj.co.jp/aug/qa/ans0001-0050/1211.html その後、こちらでも同様な問題が報告されてました。こっちは
htmlではcsvファイルの読み込みですけどね。
で、こちらは回答付で、回答の中に対処法とソースのリンクが書かれて
ました。
こちらの方がやや敷居が高そうですが、汎用性がありそうですね。
(htmlが読み込めるのかどうかは不明ですが)
WinInet.dllの機能を使うとのことですが、何でしょうWinInet.dllとは?
いずれにしても、これを使いこなせば、色々とおもしろいことが出来
そうです。
訂正 >htmlではcsvファイルの読み込みですけどね。 htmlではなくcsvファイルの読み込みですけどね。
もっと効率的かつかつ画期的なシステムを思いついたので ちょっとも釣ります。
>>228 この214さんは偽者です。
何故私なんかの偽者に???
冬休みだし3連休だし…
231 :
名無しさん :02/12/22 10:38
さっき、川原でやった六尺兄貴凄かったです!ガチムチの色黒兄貴がオッス連呼で 張型ケツにぶちこまれ腰振ってました。俺もくわえさせられて浣腸食らい無様に 排便さらしました。バリカン出されたときは一瞬引いたけど、兄貴の「いやなら 止めていいんだぜ!」の一言で覚悟決め、生まれて初めて丸刈りになりました。そ の後、脇・チンゲも刈られてビンビンのマラ、思いっきりしごかれ派手にガチムチ 兄貴の顔に飛ばしました。スッゲー男らしく気持ちよかったです。また行くとき カキコして下さい!帰ってから丸刈りの頭見て、また感じまくってます!
233 :
デフォルトの名無しさん :02/12/22 14:35
_/ ̄ ̄ ̄`v―--、
/ ヾ \
/ / ヾ \
/ |ヽ ヽ
| / | \ |
/ // / ///丿 | | | |ヾ\|
| | /_/_/_/_// __|_|_.|_|_|\ |
| | | ヽ-=・=| ヽ-=・=- | ||||
| | | | | | ||| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |  ̄ ̄ ̄/  ̄ ̄ ̄ ||| < 無職童貞35歳守本浩司です。よろしく
| | | ( _⌒_ ) | || \______________
.| | _,..、_ / |
.| ヾ |\ `ー〜' /| | .|
http://psycho_boge.tripod.com/index.htm | ゝ\ /| | | |
| | ゝ ~`ー、___/ | | ||
////.∧| / | | | | |
つづく
スレタイだけ見ると、Access2.0スレなのかと思ってしまった。
わたし独学でVBAちょこっとやってるのですが、教えてください。 accessのVBAから、同じフォルダ内にあるエクセルをGetObjectなどで 呼び出そうと思うのですが、そのフォルダがサーバ上にある場合、 \\から場所を指定しないといけないですか?
>>236 問:
「同じフォルダ内にあるエクセル」とは、"*.xls"ファイルの事か。
「そのフォルダがサーバ上にある場合」とは、ネットワークドライブ経由でなのか、
あるいはWeb経由なのか。
注意:
"546"←こういうハンドルは紛らわしいのでわめてくれ。
546は、うっかり間違えました。すいません。 *.xlsのことです。それで、ネットワークドライブ経由です。 サーバのフォルダ内に、 *.mdbと、"a"というフォルダがあります。 "a"の中に.xlsファイルがいくつかあり、その中の特定のファイルを *.mdbのVBAから指定したいのです。
239 :
デフォルトの名無しさん :03/01/05 05:57
>>238 \\必要。
Mid(CurrentDb.Name, 1, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) & "a\" & "hoge.xls"
でOK。
>>239 さん
ありがとうございます。これでいちど作成してみます。
Access2000のGetObjectで開いたエクセルのファイルの、シートを指定したいのですが、 シート名が日本語の場合、エラーが出てしまいます。 というふうにしています。シート名をアルファベットに変えるとうまく開きます。 xls.Application.activeworkbook.sheets _ ("シート名").select 日本語のシートは指定できないのでしょうか。 過去ログを見ると、初歩的な質問をしている人は「死ね」とか 暴言を吐かれていますが、ここは初心者は来たらいけないスレですか? それとも暴言を吐いた人が田舎者なのですか?
242 :
236(ログ修正) :03/01/07 05:05
表記が変だったので修正しました。 Access2000のGetObjectで開いたエクセルのファイルの、シートを指定したいのですが、 シート名が日本語の場合、エラーが出てしまいます。 xls.Application.activeworkbook.sheets _ ("シート名").select というふうにしています。 シート名をアルファベットに変えるとうまく開きます。 日本語のシートは指定できないのでしょうか。
>>242 オブジェクトを得たら
Set tempobj = MyXL.Application.sheets.Item("ダミーデータ").cells(10, 1)
こんなふうにデータを取れる。
>暴言を吐かれていますが、ここは初心者は来たらいけないスレですか?
変に煽るな。質問者が荒らしを招いてどうする?
>>243 ありがとうございます。
頭は働くのですが、目が疲れてズキズキするので
休憩してから数時間後にトライしてみます。
煽ったつもりは無かったんですが・・。素朴な疑問です。
他のスレ行くと、もっと酷い暴言が飛び交ってますね。(美容の巨スレなど)
顔を出さずに済むならここまで言えるんか。と呆れます。世も末ですね。
>>244 あなたも街中で「ここは暴言を吐く人達の集まりか? 世も末だな」なんて
大声で言わないでしょ。
顔を出さず言いたいこといってるのはあなたも彼らと同じわけです。
246 :
デフォルトの名無しさん :03/01/07 17:47
私は言いますけどね・・・ 街中でいえないことはここでも言わない。 こういう人間だっているんです。 どっちがまともかはわかりませんけれど。 スレ違いですみません。
>>246 街中には暴言を吐く人はいないでしょう。
暴言を吐く人たちのあつまる場所とはスラムのように荒れすさんだ場所です。
ここは2ちゃんねるです。
2ちゃんねるとはインターネットの中のスラムのようなものです。
ルールなんてものはありません。世も末なのも当然です。
学校のように秩序があり、誰も暴言を吐かず、高級住宅街のように きれいなスレばかりの2chなんて何の魅力もないと思う。
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
なんでも俺を実験に使うそうで
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。 これで完全終了ってことか。
ここがダメになれば次の遊び場を見つけるだけの話さ。 ナプとか見てればわかるだろ?
254 :
デフォルトの名無しさん :03/01/09 18:07
開発を進めていたら、いきなり以下のエラーがでて強制終了してしまいました。 それからというもの一定の画面でこの処理が多発します。 仕事になりません、どなたか理由わかりますか? <エラーメッセージ> アプリケーション ポップアップ: MSACCESS.EXE - アプリケーション エラー : "0x77fcd510" の命令が "0xfffffff8" のメモリを参照しました。 メモリが "read" になることはできませんでした。 プログラムを終了するには [OK] をクリックしてください 分かる方、助けてください(T-T)
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
256 :
困ったくん :03/01/09 20:16
Accessのパスワード解除の方法をご存知の方おられますか? pocosoftさんが作られているようですが、応答がありません。 よろしくお願いします。
俺も知りたい。 Winnyで手に入れた重要機密が書かれたmdbの内容を公開したいんだ。
258 :
困ったくん :03/01/09 20:21
書き忘れましたが、Accessのバージョンは97です。
>>266 告発するような奴は2ちゃんねるなんか見ないと思われ。
書き忘れ Windows2000で、ACCESS2000です。
>256 それってAccessのみで動いてるorVB等から使われてる、どっち?
どうもです。
Accessから既存のエクセルシート(日本語名)が指定できなかった件ですが、 参照設定をしていなかったことが原因でした。 教えてくださった方、ありがとうございました。
111 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:33 ID:rLfxQ17l
>datの書いた内容とIPが対になってることを証明すんのもめんどくさいもんな。
そゆことです。
114 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:34 ID:ZxrhkN5z
幼女をレイプします
119 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:35 ID:rLfxQ17l
>>114 携帯電話からご苦労様です。
139 名前: ◆FruitsMIpE [sage] 投稿日:03/01/08 17:38 ID:s/ESWpsO
「携帯から」とか公開しないでほすぃ。。
150 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:40 ID:rLfxQ17l
>>114 みたいなことを書いたらそうなりますです。>139さん
170 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:42 ID:rLfxQ17l
負荷が高そうなサーバにも入れて見ます。
217 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:49 ID:rLfxQ17l
一定期間でログは消しますです。
249 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:52 ID:rLfxQ17l
>荒らしとか犯罪のためなの?
そす。
246 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:52 ID:BH998yxV
>ひろゆき
俺のお気に入りのスレとか荒されてるんだがそういうのにも有効?
257 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:53 ID:rLfxQ17l
>>246 いずれは。
301 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:57 ID:zbarv++q
>ひろゆき
2ch閉鎖って考えたことある?
310 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:58 ID:rLfxQ17l
>>301 ラウンジが重いですとかいちいち電話してくる人がいたとき。
249 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:52 ID:rLfxQ17l
>荒らしとか犯罪のためなの?
そす。
246 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:52 ID:BH998yxV
>ひろゆき
俺のお気に入りのスレとか荒されてるんだがそういうのにも有効?
257 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:53 ID:rLfxQ17l
>>246 いずれは。
301 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:57 ID:zbarv++q
>ひろゆき
2ch閉鎖って考えたことある?
310 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:58 ID:rLfxQ17l
>>301 ラウンジが重いですとかいちいち電話してくる人がいたとき。
352 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 18:01 ID:rLfxQ17l 悲しいときー。悲しいときー。 正月に友人からエロゲーを借りて喜んで帰ってきたら、 パソコンが壊れてたー。 昨日ヨドバシカメラで部品買ってきて直しました。
ハサーン宣言・・・んなこたぁ無い・・・よな(;´Д`)
人を人と思わないコイツらの死に様は悲惨だろうな
スレ潰しでつか?
272 :
97クラック :03/01/10 12:22
ファイルの先頭から0x42バイト目からがパスワードなので パスワードを設定していないmdbの内容をパスワードが 設定されていると思われる文字数分コピーすれば…
IPとはなんですか?
>272 256はバイナリエディタなんざ持ってません。
吉と出るか、凶と出るか。。
うんこちんこまんこ うんこちんこまんこ
457 :g056137.ppp.asahi-net.or.jp :03/01/10 00:44 ID:6BZCtvnU ブラクラ。 名無しの頃には何回か。 というお粗末。
広告とか電話番号らしきものとかIPだかホストだかそんなんだったと思いまつ。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
要するに普通に雑談する分には今まで通りでかまわない。 むしろなんでも書き込んでいいと思うDQNがへるだけまし。
え!?あめぞうで過去に何があったの?
公衆に向かって電波ゆんゆんなカキコを垂れ流す事では。
閉鎖〜閉鎖〜(´人`)ナムナム
うそをうそと
自分に責任もてない奴もその能力のない奴も書き込みをするなってことです( ̄ー ̄)
レスありがとう。 俺素人だからよくわからないが アク禁にしないのは何か理由るのかな・・?
2ちゃんねるに近いあるインターネット関連会社の社長は、 2ちゃんねるの幹部から得た話として証言する。 「2ちゃんねるは、運営者や幹部などが それぞれ別々に会社を作りカネの流れを見え難くしているが、 実際の資金源は複数の大手通信会社系からの調査費名目のカネ。 月額で計約700万円と言い、年間にすれば1億円近く。 額はともあれ、これは通信会社系的には、 ぼう大なトラフィックを調査すると言う表向きの理由が一応は立つ。 自社系に都合の悪い書き込みがされた時に優先的に削除してもらうことも期待している」と前置きし 「通信会社系の削除の期待も含めて、2ちゃんねるは総会屋と同じになっている」と言うのだ。
ならない
そもそも削除人さんはボランティアなのにねぇ(^_^;) 言う事聞かないからって逆切れして、戦争(訴訟)に持ち込むなんて 正気を疑いますな(^_^;)
大分かかる
(^^)
そろそろ母と主治医と家臣がくるころかな。
296 :
デフォルトの名無しさん :03/01/14 23:23
Access2002でADOとDataGridコントロールを使用しています ADOでレコードセットを取得した後、DataGridのプロパティに レコードセットオブジェクト変数をまるごと代入したいのですが 適当なプロパティが見当たりません。 VisualBasicではデータグリッドコントロールにDataSourceという プロパティがあるのですが、Accessにはみあたりません。 ADOでデータグリッドを使用するのが目的なので なにかよい方法はないでしょうか?
Accessには、SQLServerのクエリアナライザみたいな物は無いんでしょうか? SQLは発行出来るみたいなんですが、使いづらいです・・・。
298 :
デフォルトの名無しさん :03/01/15 14:20
パラメータークエリで、例えば、入力フォームに得意先企業名を入れる場合、存在しない名前を入れたらメッセージボックスで「入力された企業が見つかりません」と出るようにするにはどうすればいいのでしょうか? isnull文という話も聞いたのですが、使い方がよく分からないので、ほかの方法があるのなら教えてくれませんか?
299 :
デフォルトの名無しさん :03/01/15 16:58
ACCESSがインストールされていない他のPCからデータにアクセスしたいのですが どんな方法がありますか? いろいろ調べてみたのですが、Httpd+ブラウザで可能の様ですが、他にもありますか? クライアントは閲覧だけの単純な物です。
(^^)
ひょっとして>296-299って同一人物?
違います。 ODBCというのでアクセスできるみたいですが、 ネットワーク上の他のPCのとも通信できるのでしょうか?
>>302 VB Script で ADO 使ってテキストファイルに書き出すとか
MDBファイルにアクセスしたいならODBCは無視の方向で
>>303 いろいろ解説されたページが見つかりました。ありがとうございます。
ODBCのDSNの設定でネットワーク上のMDBを選択できるみたいなので、
これで直にアクセスすることも可能な様ですね。
各マシンにクライアントソフトを入れるよりhttpdをたちあげるほうが楽でいいのかな?
だいぶ見えてきました、ありがとうございます。
>304 ファイル共有型データベース(Access)とクライアント/サーバ型 データベース(SQLServer等)の違いについてしっかり勉強して みると吉だと思いまつ。 Web化については、Accessのデータアクセスページという機能が 一番お手軽らしいです。が、私は使ったことがないれす。
306 :
デフォルトの名無しさん :03/01/16 10:52
Win2k Access2000です。 パラメータークエリにプログラム(VBA)内から値を渡したいのですが、 何かいい方法があるでしょうか? ネットも探しているんですがなかなかいい方法が無い・・・・ もうちょっと探しては見ますが。。。 ご存知の方よろしくです。
>>306 クエリをSQLにしてVBAに記述、パラメータ部分に変数をあてる
Text1.BackColor = 0 と記述するとフォームの全ての行の背景色が変わってしまします。 選択中の行だけを制御する方法を教えて下さい。 条件付書式は使用しないでVBAから制御したいです。
>>307 その方法はすでにわかっているのですが、
事情により、パラメータクエリがすでにかなり多く作成されています。
できればこのまま使いたいので、フォームに入力したデータを
そのままパラメータに渡す方法があれば、と思ったんですが・・・
こんにちは、グリッドコントロール使ってらっしゃる方いましたら どんなふううに使用してるか教えてくれませんか?
>>309 mdbの場合こんな感じ。DAOを参照設定に追加して
dim qdf as dao.querydef
dim rs as dao.recordset
set qdf = currentdb.querydefs("クエリ名")
qdf.parameters("パラメータ名").value = "パラメータ値"
set rs = qdf.execute
312 :
デフォルトの名無しさん :03/01/18 00:01
指定した列を除くその他の列を指定するときはどんなSQLを書けばよいんでしょうか? たとえば、こんな感じで書けたらいいと思うんですが。 電話番号以外のすべての列を取り出し。 SELECT * - PhoneNumber FROM AddressBook
313 :
デフォルトの名無しさん :03/01/19 19:22
サブフォームコントロールのSourceObjectの値をVBAで 変更しようとしたのですが、変更されません どうしたらよいですか? SubForm.SourceObject = クエリ1 SubForm.Requery 反映されません><
>>312 > 電話番号以外のすべての列を取り出し。
電話番号以外の全ての列を列挙する。
それぐらい面倒がるなよ。
それとも、フィールドの数が 100個もある、DQN DB 設計か ?
315 :
デフォルトの名無しさん :03/01/19 20:36
ODBC経由でログインするときにアカウントごとに権限を割り振ることはできますか? ACCESSのユーザーアカウント情報は無視される様で、 データベースパスワードしか問われません。
316 :
デフォルトの名無しさん :03/01/19 21:54
317 :
デフォルトの名無しさん :03/01/20 00:39
板違いですまそ!! WindowsXpでAccess2000って使えますか?
318 :
デフォルトの名無しさん :03/01/20 00:50
>317 自分で調べろ。
>312 自分で調べ方があなたの為。 それ以上は言わない。
↑ >321充てだった。 間違えた。すみません。
324 :
デフォルトの名無しさん :03/01/21 09:48
パラメータクエリの結果ををCSVにエクスポートする作業をしているんですが、 エクスポートしようとすると、 「パラメータが少なすぎます。2を指定して下さい」 と出て出力してくれません。(パラメータ入力ウィンドウも出ない) もちろんPC画面上ではパラメータを入力すればデータはちゃんと見れますし、 不思議なことにXLSにはちゃんと出力してくれました。 ちなみにクエリ上にパラメータは二つあります。 どなたか原因がわかる方はいますか? ちなみにACCESS2000、Windows2000です (今回は緊急だったのでとりあえずパラメータクエリをやめて、クエリデザインで定数を指定してCSV出力しました)
>>313 フォーム内のレコードソースだけを変えたいならこっち
SubForm.RecordSource=クエリ
SubForm.Requery
フォームごと変えたいなら
SubForm.SourceObject = フォーム名称
327 :
デフォルトの名無しさん :03/01/22 23:19
メインフォームの詳細部分に2つのサブフォームのどちらかを ボタンのイベントか何かで表示させたとき、詳細部分の高さを サブフォームの高さに合わせることはできるのでしょうか。 サブフォームを入れ替えることは出来ているのですが 2つのサブフォームの大きさがそれぞれ異なるため、 どちらの大きさにあわせても見た目が変になってしまいます。 どなたかうまいやり方を教えてください。
328 :
デフォルトの名無しさん :03/01/23 12:02
>327 hightとかいうプロパティいぢってみるよろし。
329 :
デフォルトの名無しさん :03/01/23 12:43
いきなりの質問ですみません。 Access2002にdBase4のテーブルをインポートかけると、 フィールド名とレコード内データの全角文字が化け化けになっちゃいます。 MDAC2.1 + Access97なら、化けずにインポート可能(らしい)との情報は 得ているんですが、Access2002へのインポートは、不可能なんでしょうか? BDEをいじったりしましたが、いよいよ、手がなくなっちゃいました(涙) もしどなたか、情報をお持ちでしたら、よろしくお願いいたします。
330 :
デフォルトの名無しさん :03/01/23 16:23
>>326 サンクス、なぜかエラーがでます
kueriはクエリの名前です
特にkueriをselect * from table;としてもいいですよね?
SubForm.RecordSource="kueri"
SubForm.Requery
SubForm.RecordSource=kueri
SubForm.Requery
>ODBC経由でログインするときにアカウントごとに権限を割り振ることはできますか? どうやらコンパネのODBC設定で選択できそうな雰囲気。
(^^)
>>330 SubForm.Form.RecordSource = "kueri"
SubForm.Form.Requery
334 :
デフォルトの名無しさん :03/01/30 09:53
accessというより、データ型についてのみんなの意見をお聞かせて下さい。 日付データを扱っているんですが、 現在のシステムはテーブルによってTEXT型8桁と、DATE型 が混在しているというとんでもない状態になっています。 どちらかに統一しようかと思っているんですが、 皆さんとしてはどちらがお勧めですか? 自分の考えでは、DATE型だとデータ入力時に"/"を入れなければ入れないなど、 今までYYYYMMDDで入力してきたユーザーとしてみたら慣れなさそうな感じがしたので、 文字列にしてしまって、昔ながらの日付計算などを やってしまおうかー とも考えているんですが・・ でもせっかくDATE型と便利な型もあるんだから使ったほうがいいのかな・・・
>>334 定型入力に9999\/99\/99;0;_を入れればいいのでは?
データの持ち方はどっちでもいい。システム内で統一されていればな。 スラッシュ無しで入力してもフォーカス外れるときに整形してやればええだけだと思うが・・・
337 :
デフォルトの名無しさん :03/01/30 12:45
別テーブル・クエリーを参照してのupdateがうまくできません。 SQLで書くと、 update A set A.date = B.date from B where A.NO = B.NO といった感じになると思うのですが、エラーになってしまいます。 更新クエリーを使っても、うまくできません。
338 :
デフォルトの名無しさん :03/01/30 20:43
test
339 :
デフォルトの名無しさん :03/02/02 11:38
AccessからOutlookの仕事をインポート/リンクすると、 件名フィールドが存在しないのですが、これって仕様? 予定表だとあるのに。 試した人教えて下さい。
340 :
デフォルトの名無しさん :03/02/05 17:38
誰か〜、Accessを勉強できるページを教えてください。
ちょっと質問です。 AccessとPostgreSQL, MySQL,Firebird, Oracle, MS SQL Server との違いは何ですか? これらのDBと比較してAccessを使うメリットとは何ですか?
>341 PostgreSQL, MySQL,Firebird, Oracle, MS SQL ServerはDBMSです。 AccessはDBMSではありません。 データベースのフロントエンドツールです。(これもちょっと語弊があるが。) 違うものなので、単純な比較もできません。 比較するなら、JetやMSDEでせう。
343 :
デフォルトの名無しさん :03/02/06 17:31
>>342 > 比較するなら、JetやMSDEでせう。
比較するならファイルメーカーだろ
>>341 > AccessとPostgreSQL, MySQL,Firebird, Oracle, MS SQL Server
> との違いは何ですか?
Accessユーザにはヴァカが多い。これが決定的に大きな違い。
> これらのDBと比較してAccessを使うメリットとは何ですか?
ヴァカでもそこそこ使えるし、出来損ないのなんちゃってシステムを荒築
できる。
非連結を多用する奴はうんこ
> これらのDBと比較してAccessを使うメリットとは何ですか? これらのDBのフロントエンドツールとして Accessを使う事が一番メリットが大きいのでわ。
347 :
デフォルトの名無しさん :03/02/09 03:29
データベースには、ファイル型とサーバー型DBMがある。 ファイル型はアクセス、DBASE、ファイルメーカーなどで 小型のパソコンなどで使われる DBMはSQLサーバーなどと言われ、専用にコンピューターを用意するような 大型のシステムの中心になる。データの管理はDBMソフトが行なうので安心である
348 :
デフォルトの名無しさん :03/02/09 12:52
Access2000以降にDAOの参照設定するやつはウンコ
349 :
デフォルトの名無しさん :03/02/09 13:04
>>344 >>341 はそんなことを聞いてないって事は冷静になればわかるよね。
Access使いを馬鹿だの何だの言う前に冷静になれよ、な?
仕事で使っててまわりヴァカばっかでストレスたまりまくってるんだよ。 愚痴ったっていいじゃないか。
>>350 > 愚痴ったっていいじゃないか。
マ板でやれよ。
Accessはフロントエンドツールとして、便利、ですか。 どもサンクス。
353 :
デフォルトの名無しさん :03/02/10 01:55
>>352 おれはMySQL使いだが、ほとんど常識だな。
>>384 フォームのサブオブジェクトの Recordset は2000でもDAOのオブジェクト
でしょ?
>>364 Accessって、凝ったことをやろうとすると急に難しくなるのよ。
なれてて定石を組み合わせてつくれるんならいいけど、プログラマが
甘く見て取りかかるとはまる。
なんかいきなり、 開くと「モジュールが見つかりません」ってエラーがでるようになってしまったんでつが、 こういう場合はどうしたらいいんでしょうか。
>355 まずは新しいMDB作ってそこへ全モジュールインポート。 動けばバンザイ。
>>356 今回はちょっと前のバックアップから戻してしまったので、
今度なってしまったら試してみます。
あ、いやバックアップがあるならそれ使うのが一番ダス。
Q1.Access からOracleのデータベースに接続する方法にはどのような方法がありますか? Q2.ADO、oo4oという方法が在ると聞きましたが、DOAでも可能ですか? Q3.oo4oだと「Variantになってしまうのでデバッグが面倒くさい」らしいのですがそんなものですか? Q4.oo4oってつかえますか?
>>358 「ちょっと前」ってのが問題なので、最新のものからサルベージできるならそ
れに越したことはないのです。
>359 A1 最近のトレンドは無線LANですね。 A2 DOAといえばエロバレーです。 A3 えてしてデバッグはメンドクサイものです。 A4 私は使えません。
>>348 アップサイズ予定の無い Jet データベース用に ADO 使う奴がウンコ
363 :
デフォルトの名無しさん :03/02/11 20:37
フォームにボタンくっつけてそれを押したら サブフォームに表示されるものが変わるってのはどうすればよろしいの?
>>359 Accessでoo4oとか使うメリットないよ。
やるならVBにしたほうが。
>>354 参照設定しなくても使えたよ。
>>362 ウンコ発見
>>363 どう変えるの?
サブフォーム自体変えるの?
それとも表示されてるデータを変えるの?
366 :
デフォルトの名無しさん :03/02/11 22:37
>>365 表示されるサブフォームを別なものに変えたいのです。
Private Sub ボタン_Click() subForm.SourceObject = "フォーム名" End Sub
368 :
デフォルトの名無しさん :03/02/11 23:59
369 :
デフォルトの名無しさん :03/02/13 19:40
いきなりの質問ですいません Access2kを使用しているんですが、どの様な方法で以下のような処理をすればいいのかわかりません ●現状 フィールドAに商品名(2桁) フィールドBに顧客コード(6桁) が入ったテーブルを作りました 現在2500レコード位あります。 当然商品名にはダブリが出ています(商品コードは60種類位) 顧客コードはダブっていません。 で、このテーブルをすっきりさせる為、一つの商品コードに対して、 その商品の顧客コードを/区切りでつないで、一つのフィールドにまとめようと 思っています。 うまく言葉で説明できているかどうかわからんないので、例を書きますと A B A B 01 000001 01 000001/000002 01 000002 → 02 000003/000004 02 000003 02 000004 このような形です。 1件2件でしたら力ずくでコピペする方法もあるのですが、2500件ともなりますと・・・ 初心者なので、こういった処理ができるかどうかもわからないで質問しておりますが、 どうぞよろしくご指導の程お願いいたします。
>370 Dim rst As DAO.RecordSet Set rst=CurrentDB().OpenRecordSet("SELECT * FROM Table_Name Order By A",dbOpenSnapShot) Do until rst.EOF rst.Edit 'ここになんか書く!めんどくさくなったので俺はや〜めた。 '371よ、後は頼んだ。 rst.Updata Loop
371 :
デフォルトの名無しさん :03/02/14 00:51
そんなフィールド作っても意味がないと思われ
>>369 フィールドは全てテキスト型だよね?
ということで、テーブル名をテーブル1、2つのコードのフィールド名をそれぞれAとB、
コードをまとめるために新しく作ったフィールド名をCすると、
クエリーのSQLビューから下のを貼り付けて、テーブル名やフィールド名を変える必要が
あれば変えてからクエリー実行。
UPDATE テーブル1 SET テーブル1.C = [A] & "/" & [B];
でも余計な心配かもしれんけど、371が言うように設計自体に問題あるかもよ・・・。
設計以前の問題のような気が・・・(´д`;)
だれか助けてください! ACCESS97でEXCELブックを読み込み、テーブルに書き込む処理を書いたんですが 途中でEXCELがハングしてしまいます 普通にCreateObjectして操作してるのですが データ量が増えると駄目みたでして・・・ こんな障害例ってないですか?
375 :
デフォルトの名無しさん :03/02/14 18:32
>374 つうか、せっかくAccess使ってるんだから単純にリンクせぇよ。
377 :
デフォルトの名無しさん :03/02/15 00:54
>>374 EXCELブックをCSVに変換してから読み込めば
>>369 あー今気づいたけど、意味取り違ってたみたい・・・すんまそ。
方法はあると思うけどやっぱりそれは無茶な設計なのではないかと・・・。
379 :
デフォルトの名無しさん :03/02/16 14:39
アクセスでSQL扱う時、うちの会社では 文字型フィールド(テキスト型、メモ型など)にデータを入れるとき " (ダブルクォーテーション) でなく ' (シングルクォーテーション)を使っています。 これっていいのでしょうか? 例) TableName は数値型のAとテキスト型Bの二つの列を持ちます。 このテーブルに Aが999、Bがテスト という一件のレコードを追加する時、 INSERT INTO TableName Values(99,"テスト") と発行するのが通常だと思いますが、うちの会社では INSERT INTO TableName Values(99,'テスト')としています。 社内ではオラクルも扱うのでまぁ便利といえば便利ですが、 直感的にまずい気がしています。 ずばり、Accessに対してSQL文でレコードを追加する際、 文字列型の値は " でなく ' で囲んで安全が保証されるのか? ということをお聞きしたいのです。 よろしくお願いします。
SQL は ' (シングルクォーテーション) でくくるのが普通なので会社が正しい。
>380 レスありがとうございます。 では、Accessに対して ' (シングルクォーテーション) でくくる意味は 全くないと理解してよろしいでしょうか?
>>369 基本設計に戻って考えた方がいい
販売管理の定番のファイルだと思う
マスターを別に持ってマスタ登録済み以外を入力させないようにする
商品マスタ、顧客マスタ、売上データファイル
>381 すみません。 >' (シングルクォーテーション) でくくる意味は >" (ダブルクォーテーション) でくくる意味は の間違いでした。 まとめておくと、 AccessでSQL発行する時に 文字型フィールドに対して ' (シングルクォーテーション) で囲めばよい。 " (ダブルクォーテーション) でなければならない囲む理由はない。 という風に理解してもよろしいでしょうか? お手数おかけします。
ADOでJETをアクセスするんだけど、検索スピードが無茶遅い。 どうしたら、速くできるかおしえて。
>384 遅い所を探す所からはじめれ。 どうせインデクスが無いとかそういうオチなんだろうけどな。
JET→SQLServerに変更。
ますます遅くなるに一票
>>384 それだけの情報でアドバイスできるか、アフォ!
フフッ素人どもが。 確かに>384が提供している情報はアフォみたいに少ないが、 俺様なら絶対に早くする為の秘策をアドバイスできるぜ。 早いCPU買え 早いHDD買え どうだ>384、早くなっただろう? 困ったらまた俺様に聞きな。
>390 フフッ素人が。 メモリ増設しろ が、抜けてるゼ。
>391 フフッ素人が。 もっと的確なアドバイスがあるだろう。 窓から(以下略
393 :
デフォルトの名無しさん :03/02/19 13:20
プログラム上で追加クエリ実行時の「追加しますか?」のメッセージを消す方法ありますか? ACCESSのオプションでチェックをはずせば消えるのは知っていますが、 クエリによっては確認上出したい個所もあるので。 Win2K,ACCESS2000です。
396 :
デフォルトの名無しさん :03/02/19 14:47
Access2Kをつかっているんですが、ちょっとでかいめのDBを作ると、 すぐに壊れるんですが・・・ 150Mを超えた辺りから不安定になり、500M以上ならば、ほぼ3〜4回に一度はクラッシュ! 今はなるべく小分けしたDBを使って対処してますが、作業効率が落ちまくって 仕方ありません。 97の時はこんな事なかったんですけどねえ・・・ 2002は2Kに比べたら安定してるんでしょうか? それによっては購入も考えたいと思っていたりします。 使った事のある人がいたら、教えてください。
1週間前にAccessをはじめました。 本の73ページを参考に作っているのですが、更新クリエでエラーになります。 何が間違っているのか全然わかりません。 初心者なのでわかりやすく教えてください。
>396 うち、2000で1G超のMDB使ってるけどそんな現象無いな。 そうじゃなくても、100メガ程度でDB破損が頻発するなんざ いくらAccessでもありえないと思うけど・・・ ひょっとして、複数クライアントでMDB共有してるとか?
>398 Accessの本は世の中に1冊しか無いと思ってるようですね?
>>400 1冊しか刷らない書籍ってあるのか?(w
定価200万ぐらい付けないとコストを回収できないだろ?(w
>>399 その通りです。
現在10ユーザー位で共有して、てんでバラバラのタイミングでクエリの実行とか
行っているんですが・・・
これが原因なんでしょうか?
>402 やっぱりw 97ではOKで2000だとNGってのがよくワカランけど・・・ 基本的に、MDBをマルチユーザで動かすのはリスキーなものだと思っておいた方がいいよ。 運用や設計によっては問題なく動かせるらしいけど、そんな事に労力払うくらいならMSDEや SQL鯖へ移行した方がずっと楽だと思う。
>>403 なるほど
考えてみれば、97時代はスタンドアローンでDBを管理していたのですが、
2Kになってから共有するようになっておりまして・・・。
問題は2Kではなくて、環境だったんですね。
適切なアドバイスありがとうございます。
ところで、MSDEというのは導入するとなると、どれくらい費用がかかる
物なのでしょうか?
正直、予算的には厳しい環境の中で仕事をしているので、なんともいえないの
ですが、クラッシュしなくなるんであれば、かなりの効率アップにつながると
思う物で・・・
申し訳ありませんが、よろしくお願いします。
>>405 をを!
ありがとうございます!
早速ダウンロードして試してみます!
407 :
デフォルトの名無しさん :03/02/19 20:56
MDB壊さないコツはモジュールやフォームとファイルを分けること。
>>407 俺はそう主張したが、
1ファイルにしてくれと言われた。
>>407 ウチはそれやってるけど壊れるときがあるよ
ネットワーク共有のmdbではレスポンスが悪いし、
たまに壊れるのでMSDE+ADPに移行中です。
410 :
デフォルトの名無しさん :03/02/22 14:57
Win2K,ACCESS2000です。 ADOのレコードセット使っている時、 現在のレコードセットに格納されている件数を取得するプロパティみたいなのはありませんか? ループで回してカウントするってのは無しで・・・・ よろしくお願い致します。 ※RecordCountは違った・・・・それっぽかったのに(涙)
rst.recordcount
NT4、ACCESS97のMDB(プログラム)から ORACLEにリンクしたMDB経由でORACLEにアクセスしています。 処理内容はバッチ処理で、ファイルを開くと勝手に実行する仕組みになってます。 で、自分でMDB(プログラム)をダブルクリックして実行するとちゃんと動く。 が、ATコマンドでスケジューリングして実行しようとすると、 「3151 ODBC--<名前> への接続は失敗しました。 」 となる。 コマンドは 「AT hh:nn /INTERACTIVE "D:\UntaraKantara\PGM.mdb" これは何が原因(・∀・)ナンデショ?
恐ろしいことする奴だな
414 :
デフォルトの名無しさん :03/02/24 09:18
>412 ATコマンドってデフォルトではシステムアカウントで実行するからじゃないかな。 ログオンアカウントを設定してみては。 コンパネ→サービス→Schedule→ログオンのアカウント
415 :
デフォルトの名無しさん :03/02/24 09:30
人 (_) (___) よいちょ、よいちょ (,,・∀・) ( O┬O 〜 ◎-ヽJ┴◎ キコキコ
人
(__)
(__)
( ・∀・)
>>414 ありがとごじゃます
人 (_) (___) よいちょ、よいちょ (・∀・,,) O┬O ) ◎-しノ┴◎ 〜 キコキコ
Accessで自作した顧客DBを外でも閲覧、更新したいと思い WindowsCE系のPDAの購入を考えてますが Pocket AccessがAccessとデータの互換性がなかったり M$サイトに「SQL Server CEならエキサイティングなエクスペリエンス」 とか言われて日曜プログラマな自分は途方にくれます。 WindowsCEでAccessを使うような話題を扱ってるスレとか サイトを知ってる人いたら教えてください。
421 :
デフォルトの名無しさん :03/03/04 12:02
ACCESSとはちょっと違うかもですが、 レコード長が2000バイト以上、項目数が256を超える固定長データを 取り込まなければならなくなりました(AS/400の固定長データなんですけど) ここの住人ならご存知だと思いますが、明らかにACCESSにインポートできるデータではありません。 そこで、SQLサーバに取り込もうと思い、 SQLサーバのエンタープライズマネージャーのインポートウィザードで、固定長ファイルを インポートしようと思ったのですが、 エンタープライズマネージャーにはACCESSでいうところの「インポート定義」 見たいなものはないんでしょうか・・・? また、ACCESSで上記のような長いレコードを取り扱わなければならなくなった場合、 皆さんだったらどのようにしますか?(分割するってのは無しです) やっぱりSQLサーバを使うしかないんでしょうか・・・? ちなみにACCESS2000です
422 :
デフォルトの名無しさん :03/03/04 13:22
>>421 エンタープライズマネージャの件は質問の意図を汲みかねるが、
DTSインポートウィザードの「変換元テーブルの選択」で「…」をクリックする。
ってことでよいかな(こっちの環境はは7.0なので2000は知らん)
これが使えないならVBで1件ごと読み込んで書き込めばよいのでは
Accessで扱えない長いレコードを複数のテーブルに分割するのがNGなら、
他のRDB使う以外に解決策は無いと思うが
>>421 は何を期待しているのだ?
>>422 分かりづらい文章でスミマセン(−−;)
とりあえず、RDBはSQLサーバを使います。
DTSインポートウィザードは分かりますが、
これだと固定長フィールド列の定義をインポートする度に行わなければなりません。
あらかじめ別所で固定長データの桁数定義をしておき、
それを読み込むと自動的に固定長データが項目ごとに分割される
という機能を探しています。要するにACCESSのインポート定義みたいなやつです。
(毎月同じ形式の固定長データを読み込むため)
プログラムを使うしかないのかな・・・・
425 :
デフォルトの名無しさん :03/03/05 14:37
固定長のファイル処理なんてプログラムの基礎中の基礎だろ。 CSVにするだけでも扱いが全然違うじゃん。 毎月実行するなら面倒くさがらずに作れよ! DTSとかMSツール使ったところで、結局その枠の中で右往左往しなきゃならん。 とりあえずSQLサーバなんていってるくらいだから処理の内容は見当がつくよ。 VBAなんかでPCで扱えるデータとして一般化しておけ。 作りたいデータはその過程で簡単で処理できるはず。
固定長データが一般的じゃないって言ってるのか...?
ほんとにAccessユーザーってのはナメてるのが多いな
428 :
デフォルトの名無しさん :03/03/05 18:39
反論されないと面白くない。
まぁ、あれだ。 ム板スレでプログラム使わずに何とかしたいっつーのがな・・・。
>>421 がかわいそうになってきたので、より具体的なアドバイス
DTSパッケージをファイルに保存してVBで操作するのが
プログラムが簡単で処理速度も結構速いと思うよ。
とりあえず、421はSQL Serverの勉強をがんばれ
うまくいきません。 どうしたらいいですか・・・。 誰か教えてください。
>432 漫然としすぎて釣れないよ。
435 :
デフォルトの名無しさん :03/03/18 19:14
テキスト、バイナリの区別なく色々なファイルを丸ごと入れられる フィールド型ってありますか? メモ型かOLEオブジェクト型かですかねぇ。
>>435 四次元ポケット型が便利。
(参照設定で「ドラえもん」を追加する必要あり)
437 :
デフォルトの名無しさん :03/03/25 09:30
MS-Access2000にADO-ODBC経由で文字をカキコしてますが、UNICODEになったそうですね。 Access2000で開いても、ODBCツールで開いても文字が読めます。 内部で格納されてる型はUNICODEでしょうか。 普通片方では化ける筈なんですが、なんとなく、内部で勝手に文字コード変換やってそうで、 文字列長なんかではまりそう。
438 :
bloom :03/03/25 09:37
>>437 ミドルウェア(データアクセスツール)の選択が変。
ADOでJetを使うなら、ODBCプロバイダではなく、Jet OLEDB 4.0を使うべき。
440 :
デフォルトの名無しさん :03/03/26 13:53
長文質問失礼します。 使用環境 Access2000 + ADO(今回は関係ないかも) + Win2000 レポートにおいて、ページフッターとレポートフッターの表示(Visibleプロパティ)を 切り替える処理をしています。各ページにはページフッターでページの単価の合計を 印刷、最後のページだけはページフッターを非表示にして、レポートフッターのみを 表示し、全体の合計を印刷する処理です。 レポートのデザイン上、詳細セクションの大きさは常に一定になっています。 下から4分の1ほどの大きさにページフッター、もしくはレポートフッターが印刷され るような形です。 ここから質問なんですが、ページフッターセクションのVisibleプロパティを フォーマット時イベントで切り替えてもプレビューに反映されません。 そのセクションのフォーマットイベントでは自セクション自体の可視プロパティは 有効にならないんでしょうか? もう一つ、不思議な挙動があるのですが、プレビューが呼ばれる前にフォーマット時 イベントが数回呼ばれるようですが、これはなぜなんでしょうか。このときにpagesプロパティ などを取得しようにも、0が代入されていたりとよく分かりません。 以上、どなたかよろしくご教授ください。
>>440 で質問させていただいたものですが、一応ソースを載せますと
If Me.page < Me.Pages Then
Me.Section("ページフッターセクション").Visible = True
Else
Me.Section("ページフッターセクション").Visible = False
End If
上記のような単純な処理なのですが・・・
宜しくお願いします。
>>441 ページフッターセクションのフォーマット時イベントプロシージャの先頭に
If Page = Pages Then
Cancel = True
Exit Sub
End If
を追加すれば、最終ページでページフッターセクションが実行されない。
>>442 さんありがとうございます。
確かにかかれていたコードでページフッターの処理は飛ばせました。
が、更なる問題が発生しました。
状況としては最終ページがレポートフッターのみ印刷される状態になっています。
原因は、プレビューを実行したときに一ページ目が表示される前に
フォーマットイベントが起き、憶測ですが一通りのページがフォーマット
され、全ページ数が決定されるようですが、この時点では"Pages"プロパティ
に値が入っていないため"Page=Pages"の評価が正しく行われません。
よって、本来は最終ページにはページフッターじゃなくレポートフッターのみ
印刷されるところが、両方印刷されてしまい、結果的にレポートフッターが
入りきらず最終ページに印刷されてしまいます。
もう一度だけヒントだけでもいただければと思うのですが。
レポート自体のプロパティにあるページフッターってやつを 「レポートフッター以外」に設定すればいいんじゃないのか?
445 :
デフォルトの名無しさん :03/03/27 20:13
ACCESSの中で書いたプログラムソースを一気に全部まとめて TXT形式とかで出力する方法ってないですかね?
>>444 さんありがとうございます。
そのプロパティは私も試しましたが、うまくいきませんでした。
プレビューを実行したときには、多分ですがそのプロパティに関わらず
すべてのページに対してページプロパティを表示してしまうからだと思います。
1ページ目
┌────────┐
│ヘッダー │
│詳細 高さ固定 │
│ページフッター │
└────────┘
2ページ目
┌────────┐
│ヘッダー │
│詳細 高さ固定 │
│ページフッター │
└────────┘
3ページ目
┌────────┐
│ヘッダー │
│レポートフッター│
└────────┘
私のレポートデザインで上記プロパティをレポートフッター以外に
設定しても上記のようになります。
詳細セクションが短くページフッターとレポートフッターが
同一ページに収まるような場合は期待した動作をするのですが。
やはり無理でしょうか?
>>446 なるほど、やっかいな話だな。
Accessではその3ページ目を「最後のページ」として認識してしまうわけか。
ちょっと面倒だが、レポートを開く時のイベントプロシージャで
本来の総ページ数を取得するロジックを組んでおいて、
それを
>>442 氏の[Pages]の代わりに当てはめてみたらどうだろうか。
If Page = p最終 Then
Cancel = True
Exit Sub
End If
自分で試した訳ではないので、上手くいくかどうかはわからないが・・・。
というより、もっと楽な方法もありそうだが・・・。
役に立てそうになくてスマソ
>>447 自分としても今後ぶち当たりそうな問題だったので色々と試してみた。
結果、
>>446 の方法じゃやっぱダメ。
その代わり、[p最終]を「ページヘッダー」の「印刷時イベント」で
次のようにさせてみたら上手くいってくれたみたいです。
If Page = p最終 Then
Me.ページフッターセクション.Visible = False
Else
Me.ページフッターセクション.Visible = True
End If
そのかし、これだと[Pages]は相変わらずのままなので、
レポート上で表示させるときは -1 させたるしかないようだ。
ちなみに上の構文を「ページヘッダー」の「フォーマット時」で
試してみると、なぜか上手くいかないのであった。
>>444 さんありがとうございます
448のVisibleプロパティを変更する方法で取り急ぎ試してみまして、
イメージどおりになりました。
もう少し、時間をかけて試してみますが、すばらしいヒントありがとうございました。
イベントの呼び出し順やフォーマット時と印刷時の挙動の違いなど謎は多いですね。
印刷時イベントに設定すると若干の副作用が出ますが、これはしょうがなさそうですね。
449に追加です。 全2ページ以上の場合はうまくいくのですが、1ページだけの場合だと やはりうまくいきませんでした。 1ページ目にはページフッターは確かに表示されないのですが、レポートフッター は2ページ目に表示されてしまいます。 なんとなくですが、"レポートフッターを印刷するページをAccessが決めるタイミング"と いうものがあり、各ページのフォーマットイベントなんかよりも前にそのイベントが起き、 その後に、フッターなどを非表示にしても、レポートフッターを印刷するページ自体は 変わらないので、2ページ目に印刷されてしまうのだと思うのですが、如何なものでしょうか? さらに、"レポートフッターを印刷するページをAccessが決めるタイミング"というのは 1ページ目の情報を元に決定されるようです。 多分この辺でおかしくなるんだと思うのですが・・・ なお、フッター処理をキャンセルさせても一緒でした。
>>450 解決できたです。
[p最終]を取得した時点で「1ページしか無い」と判断した時、
その場で「ページフッター」のVisibleをFalseにしちゃいます。
後は、「ページヘッダー」の「印刷時イベント」で
Trueに戻したりすることの無いように調整すればいいです。
この場合は、ちゃんと[Pages]は1として扱ってくれてるみたい。
っていうか、こんなにヒネたつくりしてると、
他にも色々と問題が出てきそうでなんかこわい。
>>440 氏には悪いけど、こういう使い方はするべきではないのかも知れないね。
Access経験の深い賢者たちの意見を求む。
>>445 漏れも知りたい。COMでも使うしかないのかな?
>>445 試してないが、Application.VBE.VBProjectsの中でも探ってみたら?
>>444 さんありがとうございました。
大変助かりました。
確かに使い方としてはスマートじゃないですね。
しかし、今回のようなケースというのは結構あるような気がするの
ですけど、なかなか検索してもでてきませんし、あっても可視の切替の
ソースが載ってて中途半端で説明が終わってる気がします。
今回問題なのは、詳細セクションが固定で、フッター部分にはページorレポート
フッターいずれかしか印刷スペースが無いということですよね。
もう少しいろいろ試してみます。最悪の代替策としては、レポートフッターは
使わず、ページフッターに両フッターで表示するコントロールを配置し、最終ページ
かどうかで各コントロールの表示を切り替えるという方法ですが、デザイン時に
コントロールが重なって作業しにくい or レポートフッターの意味があまり無くなってしまう
というのが気になり、レポートフッターとページフッターの切替を考えていました。
今回はいろいろと教えていただきありがとうございました。
455 :
デフォルトの名無しさん :03/03/29 23:04
主キーとインデックスの違いが分からないのですが。 あと、Accessのインデックスって複数のフィールドにまたがって 作ることはできますか?
>>455 プライマリキー
レコードの一意識別子。同一キーを持つレコードが重複しないことを
保証するためのもの。
インデックス
索引のこと。文字通りで、データ検索の効率を高めるためのもの。
該当列のカーディナリティが高く、一般に検索条件に対するヒット率
(該当件数 / 母数)が低い方が効果が高い。
例えば、男女のデータがほぼ同数の場合、「性別」にインデックスを
付けても効果がない。
「カナ氏名」、「郵便番号」、「住基番号」、「会員番号」等は効果
が大きいと考えられる。(データの性質、アプリケーションの性格にも
よるので一概には言えない)
検索条件に使用しない列にインデックスを付けるのは意味がない。
また、更新処理は、インデックスを追加すると遅くなるデメリットが
ある。
> Accessのインデックスって複数のフィールドにまたがって作ることは
> できますか?
当然、できる。
それができないRDBは到底実用に耐えられない。
Access2000でテーブルに1000分の1秒までを表示できるようなカラムを作りたいのですが、 Excelではセルの書式を"mm:ss.000"で出来たのですが 同じようにデータを入力させるにはどうしたらよいのでしょうか?
458 :
デフォルトの名無しさん :03/03/30 22:12
コミット、ロールバックのやり方がわからなくて 困っています。 BeginTrans DoCmd.RunSQL("INSERT INTO TESTTBL VALUES(1,'TEST')") Rollback これではロールバックされません。 他データベースに対しては WorkSpaces(0).BeginTrans みたいにするようなのですが、 自分自身のWorkSpaceオブジェクトの取得方法がわかりません。 もしかしたら見当違いのこといってるかもしれません。 CurrentDB.BeginTrans みたいな感じかと思っていたのですが、 そのようなメソッドもなく困っています。 アクセスVBAでの更新処理はどのようにすればいいでしょうか?
>>458 > BeginTrans
> DoCmd.RunSQL("INSERT INTO TESTTBL VALUES(1,'TEST')")
> Rollback
Set db = DBEngine.OpenDatabase(strFileName, Options....)
DBEngine.WorkSpaces(0).BeginTrans
db.Execute "INSERT INTO MANKO VALUES(1,'TIMPO!')"
DBEngine.WorkSpaces(0).Rollback
ごめん、説明するのがめんどくさいから、後は、ヘルプ読むなりして
自分で調べてくれ。
>459 ありがとうございます。 Docmd.RunSQLで実行するとしか頭に無かったので 思いつきませんでした。 アクセスに直接書いているから わざわざOpenDatabaseしなくても 他の方法が定石なのかと思っていました。 ありがとうございます。
Set ws = DBEngine.Workspaces(0) Set db = ws.Databases(0) ws.BeginTrans db.Execute 云々 ws.Rollback ホントはこうやって使う
>>461 ですね。仰る通り。m(_ _)m
> Set db = DBEngine.OpenDatabase(strFileName, Options....)
動作確認してないけど、これ↓ならOK??
Set db = DBEngine.WorkSpaces(0).OpenDatabase(strFileName, Options....)
463 :
デフォルトの名無しさん :03/03/31 23:35
AccessのSQLで、抽出したいデータに自動で順位をつけて、 しかも「その順位の何位から何位までを取り出す」 という条件を付けたいのですが、下記のように するとデータが増えれば増えるほど遅くて使い物になりません。 Accessでという限定つきですがほかに良い方法ありませんでしょうか。 ※「クラス」テーブルの「名前」フィールドを名前順にソートし、 順位付けして10位から20位まで出す例 SELECT b.名前, (SELECT Count(*) FROM クラス AS a WHERE a.名前<b.名前) AS 順位 FROM クラス AS b WHERE (SELECT Count(*) FROM クラス AS a WHERE a.名前<b.名前)>10 AND (SELECT Count(*) FROM クラス AS a WHERE a.名前<b.名前)<=20 ORDER BY 名前;
>461-462 ありがとうございます。 参考になりました。 >動作確認してないけど、これ↓ならOK?? >Set db = DBEngine.WorkSpaces(0).OpenDatabase(strFileName, Options....) ↑OKでした。 なるほど、WorkSpaceオブジェクトでトランザクション処理を制御してるみたいですね。 >461 >Set db = ws.Databases(0) なるほど、こうやってDatabaseオブジェクトを取得する方法もあるんですね。 ん?としたらws.Databases(0)=CurrentDBってことなんですね。 とある情報ではなぜかまではわかりませんでしたが、HelpによるとAccess2000では 「CurrentDbメソッド」を推奨しているらしいので(私のヘルプはなぜか破損していて見れませぬ。。) Set ws=Workspaces(0) Set db=CurrentDB ws.BeginTrans なんらかの処理 ws.RollBack のようにトランザクション処理を制御するのがベストだと思います。 勘違い等、指摘していただけると助かります。
>>462 の例はCurrentDb上にない(リンクテーブルもない)外部データベースを想定した例。
466 :
デフォルトの名無しさん :03/04/01 14:50
今まで、ACCESS2000+MSDEで開発してました。 データの処理はほとんどVBAからはSQLを書かず、ストアドでやってたんですが 今度MSDEを使わずDBもMDBを使って開発することになりました。 クライアントとサーバーのMDBは当然分けるとして、ストアドが使えないから VBAでSQLを書いてやろうと思ったんですけど、サーバーのMDBにクエリーを作って クライアントのMDBから、ADOXを使ってサーバーMDBのクエリー動かしてストアドのようにしようかなぁと ふと、思ったんですけどどうでしょうか? SQL投げるよりクエリーの方がコンパイルされてて早いって聞いたし、 データの流れる量も少ないかと・・ ひとつ不安なのはデータのMDBは普通テーブルしか置かないと思いますけど、 クエリーを作ってがんがん実行させて耐久性とかやっぱ落ちちゃうのかなぁって思ってます。 皆さんの意見を聞かせてください。
その用途でMDB使用を選んだ奴を小一時間問い詰めろ。 おまえ、ファイル共有型とC/Sの違いを理解してないだけちゃうかと。 それでもMDBで行くというなら逃げろ。全速力で。
>>467 ,468
やっぱりね・・。
そういわれると思ったよ。でも、理由は言ってくれないんですよね。
(わかんねーのか。)
>>470 > 穴があくまで
セキュリティホールでも開けるのか?(w
472 :
デフォルトの名無しさん :03/04/07 00:41
メモ型にバイナリデータって入りますか?
>>472 何年目?恥ずかしいよ。入るか入らないかの問題じゃなくてさ。
,rn
r「l l h. / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 、. !j |
ゝ .f _ |
| | ,r'⌒ ⌒ヽ、. │
http://www.saitama.gasuki.com/aomori/ ,」 L_ f ,,r' ̄ ̄ヾ. ヽ. │ こんなのあったニダ
ヾー‐' | ゞ‐=H:=‐fー)r、) |
| じ、 ゙iー'・・ー' i.トソ |
\ \. l ; r==i; ,; |' .人_
\ ノリ^ー->==__,..-‐ヘ___
\ ノ ハヽ |_/oヽ__/ /\
\ / / / |.
y' /o O ,l |
>>474 いや、別にいいんだけどさ。
そんな風に煽って楽しい?
478 :
デフォルトの名無しさん :03/04/09 19:47
Win2000 Access2000での質問です。 mdbに書いたVBAで別のmdbに接続して、 接続したmdbのテーブルをサブフォームにして 表示したいと思っているのですが、どうもうまくいきません。 というのはレポートソースには ローカルに保持しているオブジェクト名か、SQLしか 書けないみたいなのでどうすればいいか悩んでいます。 リンクテーブルはメンテの関係上使用できません。 ローカルに一時テーブルを作成してそこから表示することも、 mdbを共有する関係上できないです。 OpenDatabaseで開いたDbオブジェクトの保持するテーブルをどうやったら レポートソース(Form_TESTFORM.ReportSource)に 設定できるでしょうか? よろしくお願いします。 今万策尽きた状態で悩んでます。。
レコードソースならフォームの Recordset プロパティ使えばいける
>479 ありがとうございます、 上手くいきました。 これで明日から気持ちよく作業が進めます。 ほんとありがとうございます。 こんなプロパティあったんですねぇ。 参考になりました。
Access を使わずに MDB ファイルを JET 経由でアクセスするプログラムを 作ったのですが、Access をインストールしないで初期状態の MDB ファイル だけを配布先のマシンに入れるのって、ライセンス上何か問題ありますか?
482 :
デフォルトの名無しさん :03/04/16 13:21
Access2002を使用しています。 フォームやレポートのテキストボックスに、 200303とテキスト型で格納されているデータを 平成15年03月と表示させたいのですが 上手く行きません。 何か良い方法はないでしょうか?
483 :
デフォルトの名無しさん :03/04/16 13:48
>>482 2003 と 03 を別フィールドにする
解決しました。 説明不足でした。 200303とテキスト型で格納されているデータですが、 これはテーブル上に格納されているデータです。 フォームやレポートではテーブルを基にしたクエリを使用しています。 クエリに以下の式を入れました。 和暦年月: Format(Mid([適用開始年月],1,4) & "/" & Mid([適用開始年月],5,2) & "/01","gggee\年mm\月") 該当するフォームやレポートのテキストボックスの コントロールソースに和暦年月を使用して解決しました。
485 :
アクセス太郎 :03/04/16 17:52
はじめまして 猛者の皆様にお聞きしたいのですが Access2000で コマンドボタンを押した時に OutlookExpressを起動させメールを送りたいのです で エクセルファイルを添付したいのですが 添付だけが 出来ないのです。 手動で添付させれば問題は無いのですが 何か方法があれば 教えて頂きたいと思いまして
486 :
デフォルトの名無しさん :03/04/16 18:41
>>485 まず、自分の試した方法を説明しろよ。
どうやったら添付できなかったのか?
(^^)
488 :
デフォルトの名無しさん :03/04/19 15:51
”ユーザID””ユーザ名””出身””年令”のフィールドがあるテーブルで 特定のユーザIDをクエリの抽出条件のとこで指定して年令フィールドのみを持ってきたい場合 ユーザIDが合ってれば年令が取り出せますが ユーザIDが無いものを抽出した場合、当然ですが年令フィールドには何もかえってきません このとき、クエリはnullを返しているのですか? んで僕はそのかえってきた値を利用して計算式に代入したいのですが、、、
>>488 "0件" の結果を返すことと、null を返すことは違うよ。
> んで僕はそのかえってきた値を利用して計算式に代入したいのですが、、、
意味わからん ? 何をしたいんだ ?
説明ややこしくてすみません 簡潔にまとめると あるテーブルの列と行を特定して、そのセルに入ってる値を取ってきたいって事です でもクエリでその操作をする時に テーブルの中に該当する行が見つからなかったときは返ってくる値がない 値がないということは、返しているものはNULL?ってことが聞きたかったのです
>>490 > 値がないということは、返しているものはNULL?ってことが聞きたかったのです
の答えは、
>> "0件" の結果を返すことと、null を返すことは違うよ。
だよ。
データベースの内容とクエリの内容によっては、null が一万件返って来る事もあるぞ。
もしかして、これも理解してないのか ?
>>491 値がないんだから返してるものも無いって事ですか
分かりました。
>データベースの内容とクエリの内容によっては、null が一万件返って来る事もあるぞ。
抽出したい部分(セルの値)がなにも設定されてなかったら(nullなら)って事ですね、それは分かります
0もスペース(空白文字)もNULLも全部違う。 当然NULL値を入力すべきカラムもありえる。 セルと呼んでいるところを見ると初心者と見受けられるので、入門 書を一冊読む事を薦める。
>>493 > 0もスペース(空白文字)もNULLも全部違う。
お前も勘違い組か ?
ここの話題はそう言うことじゃないぞ。
> 入門書を一冊読む事を薦める。
あんたにも薦めとくよ。
495 :
デフォルトの名無しさん :03/04/19 21:50
イタタタタ
496 :
デフォルトの名無しさん :03/04/19 21:53
みなさん すいません 教えて下さい 下記の検索文字テーブルと検索対象テーブルを比較して検索文字テーブル存在する 検索対象テーブルのデータ前後に決まった文字列を可能なのでしょうか ・検索対象テーブル [内容] 可能表現には人が意志を持って何かをする ・検索文字テーブル [内容] 可能表現 人が 意志を 持って ・検索結果格納テーブル [内容] <A>可能表現<B>には<A>人が<B><A>意志を <B><A>持って<B>何かをする。 最終的に HTMLに変換したいので宜しくお願いいたします
定期的にJET厨がくるな。
>>496 > 下記の検索文字テーブルと検索対象テーブルを比較して検索文字テーブル存在する
> 検索対象テーブルのデータ前後に決まった文字列を可能なのでしょうか
Access の前に、日本語を勉強しろよ。
499 :
デフォルトの名無しさん :03/04/20 01:53
SELECTでデータを取得してから、 どの内容によって そのレコードを更新したいので、 SELECTと同時にロックしたいのですが、 やり方がわかりません。 DAOでいうなら rst.Edit でいけるのですが、 これをSQLで行うにはどのようにすればいいのでしょうか? お願いします。 Oracleでいう「FOR UPDATE」みたいなのが あると思って探したのですが、 見つからなくて困っております。
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
502 :
デフォルトの名無しさん :03/04/21 19:12
すいません、質問です。 Win2KとAccess2000を使用しています。 一つのMDBをホストにおき、 クライアントがそのMDBに対し、UpdateやEditをかけたりします。 Update文などは全てSQL文で書いています。 しかし、クライント2台が同時接続をすると、すぐに飛んでしまうのですが、 これってそんなモノでしょうか? 回避とか出来ますか??
503 :
デフォルトの名無しさん :03/04/21 19:51
>>502 すべてSQLで処理しているならサーバーはMSDEに替えたほうがよいよ
>502 飛んでしまう、ってのはどういう現象なのか、エラーメッセージは出るのか 等をもうすこし書いたほうが吉だで。 どっちにしろ>503に同意だけど。
>503,504 回答有難うございます。 ソフトはBuilderで作っています。 飛んでしまう状態は、書き込み処理が正常に行われずに、飛んでしまいます。 エラーメッセージとしては「排他処理でロックされている可能性があります。」と でます。 Accessのオプションで、共有設定にしたりしています。 MSDE、、そうですよね。 私もそうは思いますが、仕様が仕様なので。 もう少し、自分で色々調べてみます。本当に有難うございました。
>>505 > エラーメッセージとしては「排他処理でロックされている可能性があります。」と
> でます。
ロックされてたらちょっと待って再試行するとかしてないの ?
507 :
デフォルトの名無しさん :03/04/22 11:37
みなさん すいません 教えて下さい 下記の検索文字テーブルと検索対象テーブルを比較して検索文字テーブル存在する 検索対象テーブルのデータ前後に決まった文字列を可能なのでしょうか ・検索対象テーブル [内容] 可能表現には人が意志を持って何かをする ・検索文字テーブル [内容] 可能表現 人が 意志を 持って ・検索結果格納テーブル [内容] <A>可能表現<B>には<A>人が<B><A>意志を <B><A>持って<B>何かをする。 最終的に HTMLに変換したいので宜しくお願いいたします
>507 マルチ氏ねよ
>502 え、、アクセスの共有ってそんなに駄目だったんですか。 私明日から仕事でそういうの作ろうとしてます。。 >499が私なんですが、 >502さんの状況が アクセスの限界によるものなら、 本気でやばいです。>499の質問どころではなくなってきました。 もう正直仕様の変更がきかないところまできています。。 >503 ということは出来る限りSQLを使用しないようにすれば 害は無い、ということでしょうか? アクセスが共有に弱いのはなんとなく聞いていましたが、 その原因はページ単位のロックにあるものと思っていたので、 >502さんの状況ほどとは思ってなくてお客様の要望どおり、 アクセスでの仕様を決定してしまいました。 Accessの採用、複数のクライアントからのアクセス。 この二点は同考えても今更仕様を変更できません。 >502さんのような状況に陥らないようにするには どうすればいいでしょうか? なんとかアドバイスお願いします。 泣きそうなのでageさせてください。。
510 :
デフォルトの名無しさん :03/04/22 21:09
>>509 そんな仕様訳もわからず受ける奴もしんじられんが。。。
どうしてもやらなきゃならんなら、元データ連結は絶対
にパスし、自前ロックをつけんとな。。。
MSDEで作った方が楽だ(w
>>509 > >503
> ということは出来る限りSQLを使用しないようにすれば
> 害は無い、ということでしょうか?
どうやったらこう言う解釈ができるようになるんだ...。
>>509 SQLで処理しているなら、mdb共有からMSDEへの移行がしやすいってことです。
502さんの処理が飛んでしまうのはロック時の処理が誤っているからでしょう。
コーディングに問題があるのかBuilderのバグなのかは判りません。
ページロックの問題は非連結フォームにして更新するときだけ
ロックするようにしてはどうでしょうか(楽観的ロック)
また、MSDEに移行できるようにADO+SQLでコーディングして
クエリーに自作の関数を使用しないようにしましょう
>>499 >>Accessの採用、複数のクライアントからのアクセス。
>>この二点は同考えても今更仕様を変更できません。
業務で使うなら、しかも客先納付なら絶対に怖くてできない組み合
わせだね。
複数同時アクセスは当然として、JETを採用する理由は?
>510 実はかなり小さい会社で 唯一のSEが退社してしまい、 仕方なく、私が、、ということになり、困っております。 元データ連結を避けることはネットで調べてかいてありましたので、 そうします。 MSDEはさっぱりわかりません。 今の仕事が済み次第、急いで覚えます。 >511 すみません、わかってはいるのですが、 そうでないと困るので、無理やり解釈してしまいました。。 >512 きちっとロック処理を行えば、まだ見込みはある、ということですね。 それを聞いて少し安心しました。 >513 私自身MSDEというものについて知識が全く無く、 選択肢が無かったためです。 反省しております。
徹夜してでもいいシステム作ってきます。 たくさんのアドバイスありがとうございます。 ほんとに感謝しています。 なんでもかんでも聞く気はありませんが、 力不足故、どうしてもわからない時は 助言していただけると助かります。 実は入社7ヶ月目でいきなりの山です。。 MSDE、。 名前だけ知っていて調べようとしなかったことを、 まがいなりにもプログラマーとして恥ずかしく思っております。。 たくさん意見していただきましたが、 一言一言に感謝しています。 ありがとうございます。
>>515 つーか、上司いないの ?
マジで、
> 実は入社7ヶ月目でいきなりの山です。。
と言う状況なら、組織の問題だと思うけど。
皆さん、色々ありがとうございます。 昔にAccessのDB,AccessVBAでソフト書く仕事をしたときは、 今ほど飛びませんでした。 (SQL文で書いて、大丈夫でした。 一日何万件もあるようでしたら、MSDEがいいと思いますけど。) >503さま >512でご指摘いただいた、ロック時の処理ですが、 どこかで、『既定のレコードロック』を『編集済みレコード』にチェックするといい。 と、書いてありましたので、そのようにしました。 まあ、変わりませんでしたが。(;´д`)トホホ Update文を実行すると飛んでいるようなので、どうもBuilderにも問題がありそうです。 (もちろんソースも色々チェックしています。) 解決できましたら、また報告いたします。 ありがとうございました。
518 :
デフォルトの名無しさん :03/04/23 09:26
それに加えて、ツール-オプション-詳細の「レコードレベルでロックして開く」 という項目があるけど、どうなってる? ま、Accessの行ロックは糞だとしか聞かないんでアレだが。
519 :
デフォルトの名無しさん :03/04/23 09:41
>>518 どうもこうも
すんごい勢いでmdbがでかくなるだけなのだが。
こんな行ロック信用できるか。
どうしてもやりたきゃ、ロックフラグカラム追加して
自前でロックだ。漏れはこんなことはもうしないが
酔ゐこは素直にMSDEを使おうね(w
>>519 > すんごい勢いでmdbがでかくなるだけなのだが。
本来、ページロックしかできない仕様なので、行ロックを
無理やり実現するため、レコードをページサイズに合せて
大きくしている、と聞いた記憶がある。(藁
信憑性のある情報なのか、都市伝説の類なのか、不明。
accessで モジュールをつかって コマンドボタンとコマンドボタンを線でつなげたいのですが そのやり方キボンヌ というか教えてください おながいします
いつも思うけど、雑談やアドバイスする側の人間ならともかく、質問する側 の人間がそんな言葉遣いでどうしようってんだろう。 それが人に物を頼む態度かね?
すみません いつも違う板にいるので・・・ わかるかた 教えてください お願いします
Lineメソッドあたりでコマンドボタン間に線を引いてやればヨイ。 文面通りに取るなら、だが。
525 :
アクセス素人 :03/04/24 17:55
ラインを引くのは簡単なのですが コマンドとコマンドを なんと言えばいいのか上手く説明できませんが そこにボタンがあると認識させて 線が延びる ・・・ 見たいな感じにしたいのですが 説明がへたくそですみません
ボタンのLeftとTopから位置計算してその都度Lineって事け?
>>526 あまりうまく説明できないからどうしようもないのですが
ボタンとボタンを自動的に結んでくれるのを期待しているのですが
とりあえず位置計算して引くようにしてみます
どうも迷惑かけました
528 :
デフォルトの名無しさん :03/04/24 18:56
>>527 Line.Left = Command1.Left + Command1.Width
Line.Width = Command2.Left - Line.Left
みたいなことか?
【チンコのレス】 〓〓〓〓〓 |〓| |〓| |〓| (⌒⌒) \/ 〓 【チンコお守りレス】このお守りを見たあなたは超超超幸せ者! 2週間以内に必ず彼氏・彼女が出来るよ! すでにいる人は超〜ラブラブ みんなが幸せになりますように… そのかわりこのコピペを1時間以内に、5つ別のスレに貼り付けてね・・ でないと、あなたはインポや性病になります。
530 :
デフォルトの名無しさん :03/04/26 23:01
Accessそのものをメーラとして使いたいのですが、 方法はないものでしょうか?
>>530 もう遅いから、ネタ書く暇あるなら寝ろよ。
>>530 つい最近、作ったよ。
別に、VBで作っても、Delphiで作ってもよかったんだが、Accessの方がメンテ
しやすいと思ったんで。
(DelphiもVBも職場のPCにIDEがインストールされていない、という事情もあり)
CDO(事実上、MAPIとおなじもの?)を援用しただけのシロモノなので、これを
以って「開発」と呼ぶに値するか甚だ疑問ではあるが。(藁
533 :
デフォルトの名無しさん :03/04/27 00:04
>>532 Exchange Server がないと使えないのでは?
534 :
デフォルトの名無しさん :03/04/27 01:31
>>530 メールをDB化したいだけなら、Outlook(Express)とつなげば簡単じゃない?
>>534 すでにやってます。
OutLookだと、バージョンによってオブジェクトを
変更しなくてはならないし、ウイルスに弱い、呼び
出しメッセージがウザイ、、OutLookそのものに依存
しなくちゃ何にもできない等々で使いたくない
ので、、、
>>535 Access そのものに依存するのはいいんだろうか...。
537 :
デフォルトの名無しさん :03/04/27 09:10
Accessにファイルのパスなどを保存しています。 VBで作っているEXEを使って二つのMDBファイルを同期を取りたいのですが、 パスは大文字小文字が混ざっていて困っています。Oracleでいう、 SELECT * FROM table WHERE UPPER(path) = 'hogehoge' のような感じでとるか、あるいは別の方法で同期は取れないでしょうか。
539 :
デフォルトの名無しさん :03/04/27 09:41
540 :
デフォルトの名無しさん :03/04/27 10:00
上がってなきゃこんなスレ見ねえよ
541 :
デフォルトの名無しさん :03/04/27 10:36
>>537 VB で mdb 2つ開いて、各々パス名でソートした結果を元にマージすればいいんじゃないの ?
LCase とか、UCase とかを知らないと言うだけのことか ?
543 :
デフォルトの名無しさん :03/04/27 10:45
>>542 一度やったのは
1. Recordset (x2) を取得
2. 全部大文字にして配列 (x2) に取得
3. 比較
4. なければ足す
だけど、遅かったので他の方法 (AccessとかADOの機能で) を模索中。
>>536 OutLook使用すると、激しく環境に依存しますが、
Access単体でメーラとして活用できれば
ランタイムもあるし、全く問題はありません。
>>543 > 1. Recordset (x2) を取得
> 2. 全部大文字にして配列 (x2) に取得
なんでこんなことする必要あるの ?
SQL の時点で大文字にしてソートしとけばいいだけだろ ?
> 3. 比較
まさかと思うけど、片方ひとつに対してもう一方全部を舐めたりしてないよね ?
それとも、データが100万件ぐらいあるのか ?
>>544 言ってる内容が理解できないのは俺だけか ?
547 :
デフォルトの名無しさん :03/04/27 11:04
>>545 うぉ! Access の SQL だと UCase (Field名) だたーのですね!しらんかった。
それはそれとして,データは(アクセスなのに)数万件なので、速い方法があ
ればいいなぁとおもいまつ。
>>546 「アクセスをメーラがわりに使いたい」
だけのことすら理解できませんか?
>>547 一体どれぐらいの時間で終わらせたいんだ ?
>>530 サブジェクトにはちゃんと「未承諾広告」入れとけよ(w
551 :
デフォルトの名無しさん :03/04/27 13:31
>>548 VBAでメールのライブラリ呼び出すんなら、使うライブラリOutlookと一緒、つま
り多くの問題も一緒、ってことわかってないよね。
ハァ・・・ ここじゃまともなレスつきそうもないなぁ。。。
553 :
デフォルトの名無しさん :03/04/27 16:34
>>553 これは使えそうですね。やっとマトモな方が(w
ここは基地外ばかりじゃなかったのですね。
ありがとうございました
やっと基地外がいなくなったか。
>537 別MDBへリンクテーブルはれば、片方で通常のSQL一発で出来る可能性が。
557 :
デフォルトの名無しさん :03/04/29 15:26
DBエンジンを統合するっていう計画はどこにいったの? いまからJETを使う意味ってあるのかな?
>557 積極的に使うって事はあまり無いと思うけど・・・ 予算・要件などの関係上、消去法でJetになるケースも多々あるのでわ?
アクセスでVBAを用いてフォーム上に矢印を引きたいのですが 線しか引けません 調べても見当たらないので わかる方、教えてください。お願いします
>>560 それはわかるのですが
違うやり方を探しているんです
なにかありませんか?
ないのかなー
562 :
デフォルトの名無しさん :03/05/02 21:29
>>561 Labelに矢印を書いてそことつなげるのはどうだろうか。
現状ではExcelみたいな矢印付き直線にはできないし。
563 :
デフォルトの名無しさん :03/05/02 21:36
564 :
デフォルトの名無しさん :03/05/02 21:44
>>564 ご採用ありがとうございます。つきましては使用料ですが…
オープンソース(?)じゃねーのか(;´Д`)
AccessからVBAでPCの時計いじることって出来ますか?
569 :
デフォルトの名無しさん :03/05/10 01:59
570 :
デフォルトの名無しさん :03/05/10 07:31
昔、SEDITと言ふ、世界一かるいテキストエディタがございました。 やつと発見と思ひきや、Mac版でありました。 果たしてPC/AT用のSEDITは何処にあるのでせう。 当方、昭和の御世からパソコンを使つてゐる者です。
572 :
デフォルトの名無しさん :03/05/10 11:48
573 :
デフォルトの名無しさん :03/05/10 12:01
>>568 Accessは使ったことないんだけど、APIのSetSystemTime()を呼べばいいんじゃないの?
>>568 ,573
ありがとうございます
あまりにもくだらない質問で放置かと思いました。
「時計なんてのは普通マウスとキーボードでいじるもんだろ」と。
まったくそのとおりです。
でも、キーボードのないPCなんです。
素人の僕がAccessで七転八倒しながらどうにか作った、
パートの女の子たち用の出退勤管理DB
女の子たちはまともなPCなんてつかえません。
タッチパネルで使ってるんです。
PCの時計ってのはなぜか良く狂う。びっくりするぐらい良く狂う。
遅れたPCで出勤チェック、進んだPCで退勤チェック、なんて知恵を女の子
たちは身につけてしまいました。
今までは時刻合わせためにいちいちキーボードをつないでいましたが、
もう疲れてしまいました(いちいち電源落とさなきゃならないし)
SetSystemTime()
ヘルプには載ってませんでしたけど、ググったらぞろぞろ出てきました。
これから試してみます。
(APIってのは、そもそも何なんでしょうね。ときどきお役立ちサイトから
ひろってきて使わせてもらってますが、いまだに正体が分かりません。
少なくとも僕が書くような糞モジュールとは全然質が違うようです)
>>576 お気遣い感謝です
何となく出来そうなんで、あとちょっとだけ頑張らせてくださいな。
SetSystemTimeってのは、9時間足されちゃうんですね
修正するための関数つくらなきゃならないのかな
いや、そんな面倒な話はねーだろ。
なんてことを考えつつふたたびこのスレにもどってきて、
Timeステートメントという言葉をあらためて読み返してみた。
これだったらHelpに載ってました。
というわけで
Dim MyTime
MyTime = #----#
Time = MyTime
標準モジュールも要らず、たった3行で済むことが判明したのでした。
580 :
デフォルトの名無しさん :03/05/11 11:12
>>577 代入する時刻はどこからゲットするつもりだよ
581 :
bloom :03/05/11 11:13
accessのテーブルに追加変更をするASPアプリ(vbscript)をBRINKSTER に置いたのですが下記のエラーが出てしまいます。 Microsoft VBScript runtime error '800a01a8' Object required: 'ObjConn' DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _ Server.Mappath("/ユーザーID/db/member.mdb") Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.open DBName←この部分でエラーが発生 ローカルでは問題なく動きました。 Brinksterに詳しい方、何か解決策はありますでしょうか?
>>571 ごめんなさいごめんなさい、番号まちがえてました
timeステートメント感謝します
夕べ、というか、明け方は、かなり意識も朦朧としてまして
いま起きたところです
>>588 フォームのテキストボックスを利用するつもりです
そこに数字上げ下げボタンつくって
>>584 なるほど、
>>578 見逃してました
LANで7台ほどつながってますが(なんちゃってサーバー1台と子機6台)、
インターネットにはつながってません
こっちも試してみます
きょうはあんまり夜更かしできないけど
夕べはtimeとかtimerとかで遊んで時間をつぶしてしまった
timerつかうと、フォームで時計がつくれるんですね
ちょっと面白かったです
586 :
デフォルトの名無しさん :03/05/13 13:35
Access2000使用初心者でつ。 テキストの書式をyyyyとして、 規定値を="2003"としてるのですが、2002と入力すると 「このフィールドに入力した値が不正です。」とMsgBoxが出ます。 何故?? この値を元にクエリーを作成してフォームを開くのでつが、2003年だけじゃ意味なし。 ヘルプがうまく作動しません。 右クリックも効かないし。 いちいちプロパティ開くのにツールボックスクリックすんの面倒だよおーー。
588 :
586でつ :03/05/14 09:06
>>587 タン
レスありがとう。うまくいきますた。
ところで、空データ時の処理ですが、
レポートでNoData時にはイベントプロシージャーが用意されてますが、
フォームにはないので、開く前の時点で空データかどうかを
いちいちレコードカウント調べるしか手はないのでしょうか?
ところでAccess使用中だけ、右クリック効かないのは何故なのだ・・・
589 :
動画直リン :03/05/14 09:13
590 :
デフォルトの名無しさん :03/05/15 09:39
>>585 'サーバーの時計と同期
RetVal = Shell("net time \\サーバーの名前 /set /yes", vbHide)
591 :
デフォルトの名無しさん :03/05/19 14:43
教えてください。 下のようなデータがあります。 「F1」 「F2」 A D A E A F B F B G B H B J これをF1の値が同じ場合はグループと考えて 1レコードにして 別のテーブルに下のように書き出したいのです。 F1の値が同じでF2の値が異なるものは 最大でおよそ50前後あります。 「F1」 「F2_1」 「F2_2」 「 F2_3」 「F2_4」 … A D E F B F G H J F2の値をチェックして書き出すときに 書き出し先のフィールドの指定をどうすればいいのか解らなくてはまっております。
何の為のRDBなのかって感じの質問だな
>>591 >>592 が言う通り、そんなタコな設計はヤメレ。
諸事情でできないなら、F1 でソートしといて、あとはプログラムで頑張れ。
594 :
デフォルトの名無しさん :03/05/21 10:27
ODBCについて質問なんですが、 ACCESS VBAから、ODBCデータソースアドミニストレータの画面 (ユーザーDSNとかシステムDSNとかのタブがある画面)を呼び出すことって できますか? さらに、そこで選んだDSN名をPGで取得することってできますか? 厨な質問で申しわけないんだけど、判る方、よろしくお願いします。
>592-593 いや…書き出し結果はDBとして使うわけじゃないんですが… 結局何もアドバイスはないんですね。
>>594 DAO.DBEngine.OpenDatabase( "")
は駄目か?
>596 おお! でてきました。ありがとう! 愛してる!
>595 テーブルデータの条件がわからないのでなんともいえませんが・・・ クロス集計で変えられませんか? F2の値が確定しているものだったら集計クエリでもできるかも。 そうじゃないならDAOとか使うしかないかな。 書き出し結果はExcelに出しますか? Excelに出力するなら邪道だけど、そのまま出力してから、 行列の入れ替えを使ってコピーしなおしたらいかが? ExcellVBA使えば自動でできるし。
どうでもいいかもしれないが、 今までクエリで作ってた表示画面を ビューに置き換えたら かなり速くなったぞ。(Accessでクラサバの場合) 速度で悩んでる人は参考にしてください。
601 :
デフォルトの名無しさん :03/05/22 18:52
>>600 ネタに決まってるだろ。だって
Accessでクラサバの場合
だよ。
>>595 > 結局何もアドバイスはないんですね。
>>593 の、「諸事情でできないなら、F1 でソートしといて、あとはプログラムで頑張れ。」は無視というわけだな。
タコなテーブル設計する奴はさすがだよ。
>>602 同意。聞いておいて、そりゃないわなってな態度だな。
きっと彼は何も解決できないよ。
それは置いといて、 レポートのセクションて何オブジェクトか知ってる人いませんか? Witheventsでイベント受け取りたいんだけど、 Sectionだとフォームのセクションになっちゃう。
>>601 勘違いしているようだから勉強してねって意味だったんだけど
やっぱネタかな?
時計のことでお世話になった568です
>>591 みたいなデータの並べ替え(並べ替えなのかな?)
何となく身に覚えあり、です
たとえば、F1が住所、F2が名前とかで
たとえば葉書の宛名書きで
住所が同じの人は、1枚にまとめて XX様 & YY様 & ZZ様
みたいにしたいとき。
いや、
>>591 がそういうことをしたいのかどうかは知らないけど。
僕はたまたまそうだったってこと。
はじめはExcelに吐き出してやってたんだけど(Excelなら簡単だよね)、
何が何でもAccessで完結させたくなって。
でも、クエリだけじゃどうにもならなくて。
生まれて初めてレコードセットってのを使った。
けっこう面白かったよん。
>>606 > たとえば葉書の宛名書きで
レポートでやれや。
>>606 まあ、定期的にこう言う話題が出てくるね。
データベースってあくまでも必要なデータを取り出したりするもので、データの並びを表現するもんじゃないからな。
多分こう言う奴の頭の中では、データベースがレコードとフィールドが Excel のセルみたいにイメージされてんだろうね。
レイアウトのために、3レコード空白レコード入れたいとか言い放った奴もいるし。
でも、MS のことだから
>>591 みたいなことができる集約関数とか作りそうで怖い...。
結構みんな大人だな
>>606 時計の件はどうなったの
人に聞くだけじゃなくて、どのように解決したかも書き込もうよ
別にいいじゃん
>608
だからDBとして使うデータじゃないっていってるのに
能書き言うのはよく理解してからにしたらどうですか?
そんな素人でもできる批判をわざわざするなんて
自分の能力さらしてるようなもんですよ。
それに結局なにも答えらしい事はいってないじゃない。
あなたのレスみると、この件以外でもね。
反応するのはやめておこうと思ったけど、
あんまり得意そうなレスについつい釣られました。
ちなみに知りたかったのは配列のインデックス値でした。
>>598 さん
遅くなりましたが、考えてくださってありがとうございました。
>612 マァマァ...もうちょっと判りやすく書いた方が良かったかもですね。 私も情報が少ないので598のような回答しかできなかったです。 配列のインデックス値が知りたいとかって、書かれてないんで お役に立てなかったようで残念です。(´・ω・`)
・・・何度もスマソ 実際 >608 のようなヤシは沢山いますね。 別に591さんの批判というより、一般論を言いたいんだと思いますよ。
615 :
デフォルトの名無しさん :03/05/26 19:06
ACEESSの常識はDBMSの非常識だというのは周知の事実。
>>608 をよんで違和感を感じる人はACCESS使いを自認していいと思う。
>>612 何怒ってんのか、煽ってんのか知らんけど。
> だからDBとして使うデータじゃないっていってるのに
> 能書き言うのはよく理解してからにしたらどうですか?
ハァ ? としか言い様が無いんだけど。
一応 Access (≒ ここでは Jet) は、DB なんだよ。
テーブル設計がおかしいと言うことも理解できてないんだろうな。
> そんな素人でもできる批判をわざわざするなんて
> 自分の能力さらしてるようなもんですよ。
まあ、これはあたり。
> それに結局なにも答えらしい事はいってないじゃない。
おいおい、結局
>>593 は無視ということだな。
まあ、批判は
>>602 に書いたから再掲しないけど、普通に考えたら最低の態度だと思うよ。
ちょっとでも考えた俺がヴァカだったってことだな。
> ちなみに知りたかったのは配列のインデックス値でした。
何これ ? 何の配列 ?
あの質問でこれに答えられる奴いるのか ?
正直今時点 (
>>613 読んだ後でさえ) 何を聞きたいのかさっぱりわからんよ。
>>615 まあ、MS の功罪だな。
Access のテーブル画面なんか Excel みたいな感じだからな。
勘違い野郎が増えるのはしょうがない。
ただ、
>>612 みたく逆切れする奴はどうしようもないな。
つーか、すべては使っている人間が悪い。人のせいにしてはならない。
618 :
デフォルトの名無しさん :03/05/26 22:50
同僚がADOの事を アド って読むんですが とてもイヤです。 この想い、届け君の心に。
質問。 どうやってADOを使ってAccessのフォームからデータベースに データを書き込むの?
>619 もうちょっと具体的に。 データベースってなんの?
テーブル1 :
>>591 の上の段
テーブル2 :
>>591 の下の段で、F1を除く右側がNullの状態
Tb2のレコード一つ一つにつきTb1総なめなので、数が多いと時間がかかるかも
Dim MyDB As New ADODB.Connection
Set MyDB = CurrentProject.Connection
Dim Tb1 As New ADODB.Recordset, Tb2 As New ADODB.Recordset
Set Tb1 = New ADODB.Recordset
Set Tb2 = New ADODB.Recordset
Tb1.Open "テーブル1", CurrentProject.Connection
Tb2.Open "テーブル2", MyDB, adOpenKeyset, adLockOptimistic
Dim Atai As Variant
Dim CntF As Integer
Tb2.MoveFirst
Do Until Tb2.EOF
Atai = Tb2!F1
Tb1.MoveFirst
CntF = 0
Do Until Tb1.EOF
If Tb1!F1 = Atai Then
CntF = CntF + 1
Tb2("F2_" & CntF) = Tb1!F2
End If
Tb1.MoveNext
Loop
Tb2.MoveNext
Loop
MsgBox "Fin"
ソーステーブルの名前はTTest1 フィールド名はそのままF1, F2 出力テーブル名はTOut1 Dim dbs As DAO.Database Dim rst1 As DAO.Recordset Dim rst2 As DAO.Recordset ReDim ExtFieldName(1) As String Dim FieldNameNumber As Integer Dim i As Integer Dim SQLStr1 As String Dim SQLStr2 As String Set dbs = CurrentDb FieldNameNumber = 0 dbs.Execute "create table TTemp1 (F1 char);" SQLStr1 = "select F1, count(F2) As F2Number from TTest1 group by F1;" Set rst1 = dbs.OpenRecordset(SQLStr1) While rst1.EOF = False dbs.Execute "insert into TTemp1 (F1) values ('" & rst1!F1 & "');" If FieldNameNumber < rst1!F2number Then FieldNameNumber = rst1!F2number End If rst1.MoveNext Wend rst1.Close
ReDim ExtFieldName(FieldNameNumber) For i = 1 To FieldNameNumber ExtFieldName(i) = "F2_" & i Next i SQLStr2 = "(F1 char" For i = 1 To FieldNameNumber SQLStr2 = SQLStr2 & ", " & ExtFieldName(i) & " char" Next i SQLStr2 = SQLStr2 & ");" SQLStr1 = "create table TOut1 " & SQLStr2 dbs.Execute SQLStr1
Set rst1 = dbs.OpenRecordset("select F1 from TTemp1;") While rst1.EOF = False SQLStr1 = "insert into TOut1 (F1" For i = 1 To FieldNameNumber SQLStr1 = SQLStr1 & "," & ExtFieldName(i) Next i SQLStr1 = SQLStr1 & ")" Set rst2 = dbs.OpenRecordset("select F2 from TTest1 where F1 = '" & rst1!F1 & "';") i = 0 SQLStr2 = " values ('" & rst1!F1 & "'" While rst2.EOF = False SQLStr2 = SQLStr2 & ",'" & rst2!F2 & "'" rst2.MoveNext i = i + 1 Wend While i < FieldNameNumber SQLStr2 = SQLStr2 & ",''" i = i + 1 Wend SQLStr2 = SQLStr2 & ");" rst2.Close SQLStr1 = SQLStr1 & SQLStr2 dbs.Execute SQLStr1 rst1.MoveNext Wend rst1.Close dbs.Execute "drop table TTemp1;" Set rst1 = Nothing Set rst2 = Nothing dbs.Close
すみません。激しく言葉足らずでしたね。 フロントエンドをアクセスで作り、バックエンドはSQL SERVERの C/S型のDBを構築しようと思っています。 別のアプリケーションが生成するデータとWindowsメッセージを 受領し、そのデータをアクセスフォームに表示すると同時にSQL SERVERへ内部的にデータを書き込みさせたいんです。 その後、表示させたデータを編集したい場合もある事から、フォーム上から 書き込みも可能にしたいんですが。。。
>241 > それとも暴言を吐いた人が田舎者なのですか? ひどい暴言ですね
628 :
デフォルトの名無しさん :03/05/27 13:56
質問です。 今、パススルークエリつかって、AccessからOracleのPL/SQLのファンクションを 実行してるんですけど、うまく戻り値が取れません。 お客さんところでは、oo4oが使えないらしいので、DAOを使って書いてみたんですけど、ネ ット検索しても情報が少なくて、やっと実行までこぎつけたところです。 コードは↓のような感じです。 ファンクションHOGEHOGEの戻り値は FLG(Number型):0=正常終了、-1=異常終了 STR(VARCHAR型):OUTオンリーのパラメータ 異常終了時のORACLEエラーメッセージ です。 Set DBS = DAO.DBEngine.OpenDatabase("", False, False, "ODBC;") Set QD = CurrentDb().QueryDefs("QDA") QD.Connect = DBS.Connect QD.SQL = "DECLARE STR VARCHAR2(500); FLG NUMBER; BEGIN FLG := HOGEHOGE(STR); END;" QD.ReturnsRecords = False QD.Execute QD.Close 書き方が悪い!とか言うお叱りの言葉などもいただけたら幸いです。
長い上に読みにくかった…;; 吊ってきます…。
自分もファンクションはパススルークエリだと うまくいかなかった。 ADOのが楽にできるよ。
631 :
デフォルトの名無しさん :03/05/28 11:01
Accessである項目がNULLでないかのSQL作るんですが 1."XXXX IS NOT NULL" 2."XXXX <> NULL" どっちが適切ですか?
632 :
bloom :03/05/28 11:13
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
634 :
デフォルトの名無しさん :03/05/28 17:06
637 :
デフォルトの名無しさん :03/05/29 09:31
式が NULL かどうかを判断するには、= や != などの比較演算子ではなく、 IS NULL を使用してください。 比較演算子は、いずれかの引数、または両方の引数が NULL の場合、 UNKNOWN を返します。 Access(Jet)で、たまたま動作したとしても、SQLの常識から外れたことなので 比較演算子は使わないようにしましょう。
>630 遅レスでごめん。ありがとね。 ただ、ADO使うなって指示が来てるんで困ってるッス。 取り合えず実行はできるんだけどねぇ。 エラーが返ってこないのはイタイ。
640 :
デフォルトの名無しさん :03/05/29 11:59
リンクテーブルの更新ロジックをVBAで記述することになりました。 ODBC経由でOracleのテーブルにリンクを張るのですが、 MDBを再起動させた後に、テーブルを開くとパスワードを入力する画面が 出てきてしまいます。 リンクを更新するときには、 DAO.DBEngine.OpenDatabase( "") と記述して、ユーザに使用するDNSソースを選んでもらい、パスワードも そこで取得しています。 このパスワードを保存して、次にMDBを立ち上げたときにも入力画面が でてこないようにしたいのですが、何かいい方法ありますか?
Dim cn as ADODB.Connection Set cn = New ADODB.Connection cn.Connectionstring = "山崎渉" cn.Open 君にACCESS
642 :
デフォルトの名無しさん :03/05/31 00:46
バックエンドがmdbファイルでフロントエンドがmdeファイルなんだけど、 レコードのロックってupdateの一瞬しか利かないんですか? それじゃロックの意味があまり無いんじゃ・・・と思うんですけど。
644 :
デフォルトの名無しさん :03/06/02 10:38
AccessでHTMLファイルを読み込んでブラウザと同様に 表示したいのですが、方法をご存じの方はありませんか?
>>644 ActiveXにInternet Explorerがあるからそれをフォームに乗せる。
あとは、Navigateメソッドにファイル名を指定すればよし。
ありがd。 毎回メインフレーム読み込む時に、このロジック書いて (接続文字列はDBに保存しておいて)リンク張りなおすようにしますた。 ちと重いけど、まあ許してもらおう。
メインフレーム = メインフォーム アフォですな…
648 :
デフォルトの名無しさん :03/06/03 17:46
Access2000でシステムを構築していまして、 そこからレコードをエクセル2000にエクスポートしたいのですが、 Docmd.TransferSpreadSheetを使っているのですが、 他のユーザーにロックされているから閉じれない、という意味のエラーがでて エクスポートできません。 試しにAccess上のメニューバーから普通にエクスポートしてみたのですが、 16383行以降が出力されません。 どうしたらいいでしょうか? お客さんの扱うデータは六万件前後なので、お手上げ状態です。 どうも情報が少ないみたいで自力で回避することはできない状態です。 どうかよろしくお願いします。
>>648 新しくデータベースを作ってみて、そこに元データベースから全てのオブジェクトを吸い上げてみよう。
その上でエクスポートを試行せよ。
650 :
デフォルトの名無しさん :03/06/03 18:25
>他のユーザーにロックされているから閉じれない、という意味のエラーがでて いいからさっさとエラーダイアログの内容をメモ帳に書き写して ここに書き込め。話はそれからだ。
エクセルの行数上限超えてるとか。
ていうかAccessで6万件なんて狂気の沙汰としか思えない 悪い事言わないからSQL鯖なりボラクルなりに乗り換えれ。 まとめてあぼーんの恐怖が付きまとう。
>652 6万件程度なら別に珍しくもなんともないと思うけど。 気にするべきはデータ容量であって、件数ではないのでわ。 きちんとしたDBMSを使ったほうが色んな意味でイイってのは同意だけど、 Accessで対応可能ならAccessでいいじゃん。
すばやい対応感謝します。 >649 なるほど。 そうすればエクスポートできるかもしれないですね。 でも、お客さんに納品すると、自分の手から離れるので、 また今回と同じ状況になることもありえるのでちょっと今回は 見送りますね。すみません。 >650 すみません、実は覚えてない&すぐ再現できる環境ではないのです。 とりあえず二人が同じエクセルファイルを開いて、後からそのファイルを変更すると、 保存できない、変更を破棄するにはOKぼたんを〜 のようなメッセージが出ると思いますが、あれと内容が凄く似ていたと思います。 >651 そうかもしれないのですが、エクセルへの「エクスポート時」の 行の限界に触れている解説を見つけれなかったのでよくわかりません。 そうなのでしょうか? >652-653 仕様なので今更変更効かないので今回は見逃してください。。 結局のところ何件までの同時エクスポートが保証されているのでしょうか。 同じようなパターンに出会った方おられませんか?
俺は DAO か ADO の Jet プロバイダ で こんな感じの SQL 実行するほうが好き SELECT * INTO [Excel 8.0;Database=C:\hoge.xls].[Sheet1] FROM テーブル1
>>648 普通にメニューバーから16383行以上エクスポートされるが……
>656 あれ、ほんとですか。 会社のの環境では駄目みたいです。 ちなみにAccess2000 Win2K Serverです。 どうもよくわからない制限ですね。。 ちなみに出力しようとしたテーブルには フィールドが100以上ありました。 これも問題かもしれません。 かといってフィールドを減らすわけにもいかないのです。。
658 :
デフォルトの名無しさん :03/06/04 09:41
アクセスのメニューバーに、コンボボックスを入れ込みたいのですが 標準やり方のわかる方はおられますか? WEBのメニューもあるので方法はあると思うのですが???
commandbars("hoge").Controls.Add msoControlComboBox
660 :
デフォルトの名無しさん :03/06/04 14:36
>>659 レスありがとうございす。
コードで追加するのですね。。目から鱗ですw
で、HELPや他のwebを眺めて、下記のようなサンプルなどを
取得しやってみたのですが、
Dim myCB As CommandBar
↑
ここの宣言で「ユーザ定義型は使用できません」となります。
On Error Resume Next
CommandBars("Sample").Delete
Set myCB = CommandBars.Add(Name:="Sample", _
Position:=msoBarFloating, MenuBar:=False, Temporary:=True)
With myCB
.Controls.Add Type:=msoControlButton, ID:=21, before:=1
.Controls.Add Type:=msoControlEdit, before:=2
.Controls.Add Type:=msoControlDropdown, before:=3
.Controls.Add Type:=msoControlComboBox, before:=4
.Controls.Add(Type:=msoControlPopup, before:=5).Caption = "Popup"
.Visible = True
End With
参照設定のMS-ACCESS8 objectLibrayの指定はしてあるのですが、
原因はどこにあるかおわかりでしょうか?
661 :
デフォルトの名無しさん :03/06/04 14:45
あの〜 ちょっと 質問いいでしょうか? 俺 Accessって使ったことないので よくわからないのですが DBにADOでアクセスして 190万件のDBを 固定長TXTに落としたいのですが これって アクセスでできるでしょうか?
ボケてました。。 MS-OFFICE 8 Librayと間違えました。
>>662 ちなみにAccess97ですが、動作しました。
ただ、Office8ObjectLibraryは、Accessのみの
インストールでは出てきませんね。
。。。配布時にはどうしたものか
出てこないだけで、インストールはされてますね。。 でも、いろいろテストが必要だ。。。
私も参照設定を忘れていました。 Access 2000でも動作したよ。 .Visible = Trueの前の行に .Position = msoBarTop を追加するといいかも
>661 可能。 っつーか、その用途ならいちいちAccess使うメリットなんぞ無いと思うが? VBでもDelphiでもいいから、使った事ある奴でやったほうが確実。
ボケてた。 Position:=msoBarFloatingの記述があったのね
669 :
デフォルトの名無しさん :03/06/05 02:09
670 :
デフォルトの名無しさん :03/06/05 23:23
671 :
困ったさん :03/06/06 20:12
皆様こんばんは。Access2000で、難題を抱えて悩んでいます。 【難題】 @ フォームに、テキストボックスと、ボタンを配置する。 A テキストボックスに、ファイルへのパス(「c:\db\sample.xls」等) を入力して、ボタンをおすと、ExcelやWordやAcrobat等のアプリケーションが立ち上がって、パスにあるファイルが開く。 こういうことはAccess2000で可能でしょうか? 方法があるなら是非教えてください。参考になるようなサイトがあれば御紹介いただければ嬉しいです。 どうか、よろしくお願いします!m(_)m
672 :
デフォルトの名無しさん :03/06/06 22:48
>>671 何が難題なのかさっぱりわからん。
コモンダイアログでファイル指定し、関連付けされてるなら
SHELL関数で起動するだろ?
673 :
困ったさん :03/06/06 23:15
>>672 集合スレッドに質問を書き込んでしまったにもかかわらず、ご回答ありがとうございます!
>コモンダイアログでファイル指定し、関連付けされてるなら
>SHELL関数で起動するだろ?
その具体的な方法を教えていただければありがたいのですが。
>673 Shell (PATH_TXT.Value) 終了
676 :
困ったさん :03/06/06 23:41
>>675 回答ありがとうございます。
その前に、コモンダイアログが何処にあるかわからないのです。
すみません。
678 :
困ったさん :03/06/07 00:26
>>677 ありがとうございます。m(_)m
リック先で調べさせていただいたところ、ツールボックスのコントロールの選択の中に、「MicrosoftCommonDialog」があるそうなのですが、見当たりません。
私のはAccess2000なのですが・・・
>>678 =671
ちぃっとばかし自分で調べる努力したほうがいいんじゃないですか?
それとマルチポストはいただけませんな
あぼーん
楽してコーディングしようって考え方が気に入らない。 つーか、多分身になっていないよ。その場しのぎで 良い程度のDBなんだろうけどさ。プッ(w
682 :
デフォルトの名無しさん :03/06/09 17:25
初心者です。どなたか教えて下さい。 テーブルにオートナンバー型のフィールド(名称「ID」)を追加したのですが、 (フィールドサイズ=Long 新規レコード=インクリメント インデックス=はい(重複なし) 主キーではありません。) レコードを削除して、次回レコードを追加すると 削除したはずのレコードの「ID」+1の値になってしまいます。 1から10までを消して次に追加すると11という具合に。 これを1から表示させるには、どうしたらいいのでしょうか? ちなみにレプリケーションIDにするとヘンテコな値がでてくる・・・ お分かりになる方、よろしくお願いいたします。
684 :
682でつ :03/06/09 18:06
>>683 タン
どうもありがとう。
でも、最適化しても結果は変わりませんでした。。。
それに、レコードを削除&追加する度に、最適化プログラムを
走らせるのも、重くないですか?
ユーザーが使いやすいように(PCど素人。いちいち数値を入力するの
面倒くさい。そして+1で自動的に出るってことで)
オートナンバーにしたのに・・・くすん。
別にテキストBOXを作って、レコード総数+1の値をプログラムで書いて
適用させた方が利口ですかね?
>>682 その連番にどういう意味を持たせたいの?
>>684 オートナンバーは使わないほうがよいです。
自分の好きなようにナンバリングするコードを書いたほうが融通が利くでしょ。
>684 レコード削除があると綺麗な連番にならないのはオートナンバーの仕様。 きちんと調べずにあー便利だわと使った結果色々めんどくさい事になる例多し。 まあ、Access使う人間にとっては通過儀礼みたいなもんだから、きにすんなw
一週間ほど前からACCESSを勉強しはじめた初心者なのですが、 よろしければ疑問に答えていただけないでしょうか? 顧客と契約という二つのテーブルがあって 二つは顧客IDというフィールドで顧客→契約という感じで 左結合されているのですが、 ここから顧客IDで抽出しようと思ってSQL文を書くと 何故か全レコードが抽出されてしまいます。 SELECT * FROM 顧客, 契約 WHERE 顧客.顧客ID LIKE " + "'" & "*" & txt_id.Text & "*" & "'" SQL文はこんな感じで書いたのですが、これでは 他の顧客IDも含めて何故か全てのレコードが出てしまいます。 契約.顧客IDで検索すれば契約テーブルにあるレコードだけ抽出されるのですが、 何故顧客.顧客IDで抽出すると、関係ない顧客IDのレコードまで抽出されてしまう のかがわからないのです。 最終的にはフォームから顧客テーブルの顧客ID、氏名、電話番号の どれを入力しても抽出できるようにして別フォームへ表示させようと 思うのですが、氏名や電話番号でやっても全レコードが表示されてしまいます。 仕方が無いので、一度JOINを使って一つのテーブルを作ったあと FindFirstで検索すればできたのですが SQLを使って一つの文でできる方法があると思うのです。 どうしてもわからないので、どなたかお答えして頂ければと思います。
>SELECT * FROM 顧客, 契約 WHERE 顧客.顧客ID LIKE " + "'" & "*" & txt_id.Text & "*" & "'" まずこのSQL文が疑問。 SQL文でテーブルを結合しないと、意味がないのでは? 的を射てるかどうかわかりませんが、抽出したい顧客の契約データリストを見たいだけなら、 SELECT 契約.*, 顧客.* FROM 契約 LEFT JOIN 契約 ON 契約.顧客ID = 顧客.顧客ID WHERE (略) でいいのではないかと。
質問です。 MSDEがよく分からないので、とりあえずMDBファイルに対して ADPファイルから接続しているのですが、プロシージャを抜けると 接続情報はクリアされてしまうのですか?
>>690 なぜMSDEまで使ってMDBに接続するのか理解できんが、
接続情報は一度繋げると保存されるはず。
でないと運用上問題ありすぎ。
>>691 ADPをフロントエンド、MDBがバックエンドって事です。
693 :
デフォルトの名無しさん :03/06/09 22:52
>>692 平たく言ってADPをプログラム部、MDBをデータ部ということなら、
素直にMDB同士でリンクする方が分かりやすいと思うけど。
MSDE使うならデータをSQLデータベースとかにする以外、意味ないんじゃないの?
>>689 ありがとうございます、上手く抽出させることができました。
本で読むと複数のテーブルがある場合はSELECT句に元のテーブルがわかるように
するのと、FROM句にテーブル名を書く
としか書いてなかったので、JOINでくっつけた後にWHERE句が続けられる
という事がわかりませんでした。
JOINやUNIONといった文の説明もなかったですし、VBAの本だけでは
全然ダメだと痛感しました。
SQLの本明日にでもさっそく買って勉強しようと思います。
どうもありがとうございました。
695 :
デフォルトの名無しさん :03/06/09 23:08
>>692 むしろ、ADP+MDBのやり方が知りたい。
ヽ
ヽ(
ヽ(・
ヽ(・∀
700 :
682でつ :03/06/10 08:59
>>685 >>686 >>687 レスありがとうございます。
連番の意味・・・ユーザーに聞かないと分かりませんが、
どのくらい入力したかを(件数)知りたいんだと思います。
(レコード数は表示させているけど、下にあるから見づらいとかって
ほざいてた。)
オートナンバーやめますね。
どうもでした。
701 :
無料動画直リン :03/06/10 09:13
702 :
デフォルトの名無しさん :03/06/10 12:27
あーーー久々にヘマやっちまった・・・・・ mdbがぁぁ・・・・ 1日分がパーだ・・・・
703 :
デフォルトの名無しさん :03/06/10 12:41
ここは低脳厨房専用スレだな
>700 もう見てないかな・・・。オートナンバーを1から振りなおすには、DAOで一旦オートナンバーフィールドに-1を入れそのデータを削除し、次に0をいれて削除すると実現できます。 T_tablenameの1列目にオートナンバーフィールドがあったとします。 ------------------------------------------------------------- Dim Db As DAO.Database, Rs As DAO.Recordset, i As Integer Set Db = CurrentDb() Db.Execute "DELETE * FROM T_tablename;" Set Rs = Db.OpenRecordset("T_tablename", dbOpenDynaset) With Rs .AddNew Rs(0) = -1 .Update .MovePrevious .Delete .AddNew Rs(0) = 0 .Update .MovePrevious .Delete For i = 1 To 5 .AddNew Rs(1) = i .Update Next i End With Set Rs = Nothing Set Db = Nothing ------------------------------------------------------------- 一応参考まで。
705 :
682=700でつ :03/06/10 19:05
わあ!
>>704 タン。
すごい具体的に説明&コーディングまで・・・
うれしい!
勉強になりました!!
愛してるー!
706 :
デフォルトの名無しさん :03/06/12 21:57
Access2000のサブフォームに選択クエリ(cn.execute)を使って抽出した データシートを、Excelにエクスポートしたいんですが、どうすれば 良いのでしょう? ADOXで選択クエリを作成し、Transferspreadsheet〜で出来るかな?と 思って試してみたのですが、「クエリが無い。」とか言われるし。。。 どなたが御存知ないですか?
707 :
デフォルトの名無しさん :03/06/12 22:39
Function fMakeDummyTxt(strTxt As String, strFullPath As String) Dim fso As Object Dim ojText As Object On Error GoTo err1: Set fso = CreateObject("Scripting.FileSystemObject") Set ojText = fso.CreateTextFile(strFullPath, True) ojText.Write (strTxt) ojText.Close Exit Function err1: MsgBox err.number & ":" & err.Description End Function Access97にて作成し、何の変哲もないコードで、問題なく 動作していたのですが、、、 2000に変換し実行し書き込みしてみたところ、ファイルサイズ が20Kを越えるファイルをあたりから 「5:プロシージャの呼び出しまたは引数が不正です」となり 書き込めません。。。原因のおわかりになる方はおられますか?
>>707 原因は正直言ってわからないけど、引数のサイズを際限なく取れると考えるのは
乱暴だなとは思う。
97では(ほぼ)無制限だったとしても、将来的には制限される可能性はあるし、
あるいは2000で制限された結果が、今回のエラーなのかもしれないし。
個人的には、このような用途が限定された処理を関数にする意味はあまり無いと
思っているので、書き出す値を取得する処理も込みで、それ用のルーチンを
作った方がいいと思う。
質問の答えになってなくて申し訳ないけど。
>706 エクスポートしたいクエリが物理的に存在すれば 普通にできると思うけど??? 何がどうできないのか状況が良くわからん。。。 >705 ヨカッタノゥ!
710 :
デフォルトの名無しさん :03/06/13 21:24
質問させてください。NTでaccess97を使っている者です。 mdbファイルをコピーして、同じディレクトリに貼りつけると、例えば「db1.mdb」なら 「コピー 〜 db1.mdb」と言う名前になりますよね。そのコピーファイルが開けなくなって 困っているんです。 開こうとすると、「Microsoft accessを実行するためのコマンドライン引数が不正です」の メッセージが出てしまい、実行できません。 どうも「コピー」と「〜」、「〜」と「db1.mdb」の間に半角スペースがあるおかげで ファイル名が「コピー.mdb」と認識されてしまい、ファイル名が一致しない為に開けなくなって いるようで、半角スペースを削除すると普通に開けます。 今まで長い事使っていてこんなエラーが出た事はなかったんですが、最近急にでる ようになりました。何かの設定が変わってしまったんでしょうか?
711 :
デフォルトの名無しさん :03/06/13 22:50
>>709 フォーム上のテキストボックスに、複数のフィールドに対しての抽出条件文(SQL文)を入力し、
それを選択クエリ(cn.Execute)で実行する。というプログラムを組んでいます。
物理的に存在させられるクエリに対して、毎回違うSQLで抽出させることが可能であれば、
その方法を教えてくださいませんか?
今日、行った対策はエクスポート時にサブフォームの元になるフォームもDoCmdにて立ち上げ、
そのフォームをDoCmd.OutputtoでExcelに出力するようにしました。(元になるフォームは
DoCmd.Movesizeにて見えないようにした。)
これで一応Excelにする事は出来たのですが、Excel5.0とかって言うVer.なので、ちょっと嫌です。
日付型のデータもDay-month-Yearのデータ型になってしまいます。(希望はyyyy/mm/dd)。
物理的に存在させられるクエリへの毎回違うSQL文での抽出方法 またはExcel2000に出力できる方法が
あれば教えてください!お願いします。
712 :
デフォルトの名無しさん :03/06/16 10:56
713 :
通りすがり :03/06/16 12:26
すいません、初歩的な質問かもしれませんが。 VB6で、access97のデータベースをacess2000に変換して 保存したいのですが、方法を教えてください。 知り合いに「簡単だよ」って言われてるんですが、 いろいろ調べてみてもわかりません。 お願いします。
>713 TransferDatabase
>>715 Accessが無くてもVB6で使えるのですか?
つかVB6スレで聞けよ
>713 Microsoft DAO 3.6 Object Library 参照して Call DBEngine.CompactDatabase("C:\access97.mdb", "C:\access2k.mdb", , dbVersion40)
720 :
デフォルトの名無しさん :03/06/17 17:46
クエリの現在行の値ってとれますか?
ROWNUM
ボラクルスレと間違えた
723 :
デフォルトの名無しさん :03/06/20 22:43
あるテーブルがレコードソースになってるデータシートを開き、 中身を書き換えて他のレコードに移動しないまま(カレントは変わらないまま) コマンドボタンに埋めこんであるSQL(同テーブルにある同じデータを削除する) をテーブルに発行したら、 「他のユーザーが使っているため、更新できません。」といわれますた。 me.refreshとかも削除SQL直前に実行したんだけどだめ。 大丈夫だったのが、キーボードのF9を押してからコマンドを クリックしてSQL発行したり、他のコントロールを一旦クリック してから削除ボタンを押したらパターン。 多分一旦リフレッシュしたら処理を終了させないと、テーブルを 掴んだままになってしまうってことだと思うんだけど、 これの回避方法知ってる人おながいします。
725 :
デフォルトの名無しさん :03/06/23 21:23
Access2000です。 ODBCデータベース(SQL鯖2k)へのリンクテーブルを複数作りました。 テーブルビューから普通にテーブルを開くと、正常にSQL鯖のテーブルの 内容を見ることができます。データの変更や削除、追加も問題ありません。 ところが、そのリンクテーブルに対して追加クエリや更新クエリを使おうと すると「リンクするテーブルが見つかりません」というエラーが出ます。 MDBからそのリンクテーブルを削除し、再度リンクしてみましたが状況は 変わりません。 エラーメッセージを頼りにGoogle、MS、ヘルプ・・・と検索してみましたが、 有効な情報が見つかりません。 こんな現象に出会った事のある方、力を貸して下され・・・
726 :
デフォルトの名無しさん :03/06/23 22:21
そのクエリをここにコピペしてみ テーブル名が間違ってるかそんな感じだろう dbo_XXXXXとか頭に余計なのがくっついてる
Accessじゃなくて、 mdb(ファイル鯖上)+ Jet + DAO||(ADO+Microsoft.Jet.OLEDB) の話だけど、 JetってクライアントPC(問い合わせ元) にあるよね。ということはSQLを実行する のは各クライアントPCだけど、 データはSQLで使用する(from内の) 各テーブルデータ+インデックスデータを 全てクライアントPCに持ってきてから SQLを実行しているわけ? おまえら教えてください。
>>727 > おまえら教えてください。
ここじゃこんな書き方でまともなレスはつかないよ。
おれもつけん。
>>727 その通りだよ。
だから、ネットワークが細いところでは
気を付けないといけない。
>>728 ここ(2ch)じゃ、普通の書き方だと思うけど。
pin'sという掲示板と勘違いしてないか。
ちょっと、ちがうな。 mdbのアクセスはファイルの 接続=open 検索=seek のイメージ。 ヒットしたレコードは 結果セットとしてメモリ (recordset)に格納される。 テーブル検索の場合、結果的には テーブル全件持ってきて(なめて) しまうけどね。 データデバイスがネットワーク上 にあるってことだけで この辺りは他のサーバ型DBMSと 同じだよ。 漏れもここでは書き方に違和感は 特にないけど。
ACCESSじゃフィールド名にNOTEって使えないのか! ODBC経由じゃUPDATE文でエラーになるし・・・ (しかし、SELECTはできる・・・) っていうか、ACCESSでSQL予約語じゃないけどフィールド名で使えない語集 ってないですか? おしえてください、おながいします
[NOTE] と[]でくくってみれ
解決しますた。 私も>726タソが書いたように名称の問題と思っていたのですが・・・ リンク先のSQL鯖にて、該当テーブルにトリガが設定されていて、 しかもそのトリガにバグがありエラーを吐いているのが原因でした。 試しにトリガを削除してみたところ、件のエラーは出なくなりました。
>>733 うぉぉぉぉぉ
ありがとうございます。
もう少しで、フィールド名を変更して、全プログラムを修正するところでした・・・
736 :
デフォルトの名無しさん :03/06/24 18:47
Access2002を使用しています。 レポートを表示する際、空データ時のイベント使用しているのですが データが存在するにも関わらず、空データ時のイベントが発生してしまいます。 このような場合、どのように回避したら良いのでしょうか? レポートPG: Private Sub Report_Deactivate() DoCmd.Restore DoCmd.OpenForm "FRM_BBB" End Sub Private Sub Report_NoData(Cancel As Integer) MsgBox "データがありません!", vbInformation, "情報" Cancel = True End Sub Private Sub Report_Open(Cancel As Integer) DoCmd.Maximize '画面サイズを最大 Me.RecordSource = TBL_AAA End Sub 空データのメッセージ表示後、 「実行時エラー’2501’: OpenReport アクションの実行はキャンセルされました。」 と表示されます。 10回に1回の割合でレポートが正常に表示されるので原因が分からず困っています。
737 :
デフォルトの名無しさん :03/06/25 00:40
ACCESS95からWord97に レポートをエクスポートすると 文字化けするんだけど なんで?
呼び出し元のPGにて Sleep(5000) とやったらいきました。
740 :
デフォルトの名無しさん :03/06/25 17:02
Accessって、viewを使えないの?
queryがviewの代わりに使える。
・クエリーはVIEWそのまんまの機能 ・標準モジュールで作った関数はそのままSQLの中から使える
なるほど、クエリーが使えたのか。 マニュアルやヘルプ探してもviewがぜんぜん見つからないんで、ないのかと思ったよ。
>723 他のコントロールを一旦クリックしてから削除ボタンを押すんで できるなら、クエリ実行前に、他のコントロールにフォーカスを移す ようにしてみては? そのまえに、クエリ実行時にテーブルデータを直接は 操作できないようにしとくのが無難かも。
746 :
デフォルトの名無しさん :03/07/02 14:23
Access2000を使ってます。 Jpeg画像の縮小保存をしたいんですけど、何か良い方法はないでしょうか? VB用はフリーのDLLとかがあるみたいなんですけど・・。 Accessのイメージコントロールから hDC を取得する方法とかでもいいんですが。 やりたいことは写真管理ソフトで、コメントを付けて印刷したいのです。 仕事で使うもので、印刷書式が客先指定でいくつもあるので、やむなく自作しようかと。 印刷とかはいいんですけど、画面表示するときにイメージコントロールに読み込むと時間が掛かるので、縮小画像を作ろうかと思っているんですが、数日悩んでます。
モジュールからテーブルのデータ型を変更できますか? 自分では出来なかったため、変更済みのワークテーブルを作って それで上書きしようとしたのですが、リレーションばりばりで 上書きできねーよと怒られてしまいました。 ちなみにACCESS2000です。
DAOのTabledefあたりじゃないの。 っつーかさ、ポコオコ型を変えちゃDBの意味無いじゃん。 リレーションを張ってるならなおさら。
>>747 設計したいDBの仕様を書かないとわけわからんよ。
>>746 Access内で動的にやろうとすると、DIB作ってやることになるのかなあ?
jpegだと面倒だね。
他のツールなどでサムネール作れるなら
ファイル名変更を統一して、表示させるのがいちばん簡単かと。
>>748 Tabledefでは出来なかったよ。
型が変わるのは決まってしまったことなのでいたしかたない;;
ALTER TABLEでも型変換は無理だったし…
どうしたものかな
>>751 1. 一時テーブルに変更したいフィールドのデータとキー情報を書き出す
2. 型を変更したいフィールドを Delete
3. 変更後の型のフィールドを作成して Tabledef に Append
4. フィールドの OrdinalPosition を変更
5. フィールドのデータを UPDATE で戻す
※リレーションや制約で変更できない場合は事前に削除して処理後に再作成する
Access のテーブルデザインも大体同じだと思う
>>752 おお、ありがと。
さっきordinalpositionの存在を知ってから、一気に解決しました。
まさに752氏の手法です。
無知な私をお許しあれ。
>>750 久しぶりにAPIなんか使ったらキツイっす。|〃´△`)-3ハゥー
とりあえずDIB作って保存までは出来たんですけど、縮小の方法がわかんないー。
VBみたいにAccessのイメージコントロールのプロパティに hDCプロパティがあればいいのにー。
そこらへん、適当にやってるんで、screen から hDC とって StretchBlt 掛けたりしたんですけど、やりかたがまずいみたいで、出来ないです。
CreateCompatibleDC やら CreateBitMap やらやっても、ダメです。
イメージコントロールのhDCの取得法とか無いんですかね?
どなたか外部からパラメータ起動して縮小画像を作ってくれるフリーソフトとかご存知ないですか?
755 :
デフォルトの名無しさん :03/07/03 18:41
あの、VC++6.0からAccess2000のmdbファイルを扱いたいんですけど、 最適化/修復ってどうやるんですか?API探したんですけどみつからなくって、 手動でやるしかないんでしょうか。
CompactDatabase
758 :
デフォルトの名無しさん :03/07/04 02:21
C/SでC=Access2000 S=Oracle8の構成でシステム構築 しようとしているのですが、この組合せの場合、Net8とか いうソフトが必要らしいですね。 こういうソフトをインストールすることなしに、Oracle8と通 信する方法はありますか?
759 :
デフォルトの名無しさん :03/07/04 03:06
>>754 フォームのhWNDとってサブフォームにして書くとかあるかもしれんが
やったことないので、とやかく言えん。
でも、dibで(ファイル?)保存できるのなら、やりようはあるような。
dib二つ作って、StretchBltして書き込み。imageに表示とか。
>>759 リンク先からさらにOracle ODBC Drivers for Oracle 8.1.x のダウンロード
のところをみると「対応Net Client」とあり、ここにNet8の名前があるので、
おそらく必要なのではないでしょうか。
コントロールの hWnd って取得できませんか?
763 :
デフォルトの名無しさん :03/07/04 13:44
>>761 access&オラ8で開発したが、何も必要なかったぞ
そもそもNET8なんぞ見たことすらもない(ワラ
>>763 どうやって接続したか教えてやれよ
人を嘲笑するだけの書き込みはいらないよ
765 :
デフォルトの名無しさん :03/07/04 16:13
社員"A" 時刻"10:00" 作業内容"営業" 詳細"行き先の地図" 社員"B" 時刻"10:00" 作業内容"製造" 詳細"参照URL" 社員"A" 時刻"11:00" 作業内容"打ち合わせ" 詳細"メールを参照" 社員"C" 時刻"12:00" 作業内容"営業" 詳細"予定時間" Access2000で、上のようなデータを管理したいんですけど、"詳細"の項目 が画像になったりURLになったり、その他メールの内容や予定時刻など いろんな種類のデータを入れたいんですけど、こういう場合ってどんな 風にテーブルを作るのが効率いいんでしょうか。
あ、あと社員毎の一日の作業内容や、時刻毎の各社員の作業内容 などを条件つきで検索して一覧できるようにするにはどうしたら いいんでしょうか。
763が言ってることは本当なの?
>>768 全て環境が整った(運用チーム等がセットアップ済みの)
マシンで開発していたと思う。
>>765 「プログラムで処理するもの」を考えて、それだけフィールド用意しろ。
表示上「詳細」をひとつにしたいなら、区分のためのフィールドを用意。
ってマジレスがつらいんだけどな・・・
771 :
デフォルトの名無しさん :03/07/06 21:07
772 :
デフォルトの名無しさん :03/07/08 10:37
Accessで、テーブルや項目の名称に全角を使うとなにかまずいことってありますか?
773 :
デフォルトの名無しさん :03/07/08 12:54
教えてください。 Right(" " & CInt([R]),3) & "レース" ACCESS2000のDBをWIN98SEからWIN2000にうつしたら、 数字と文字をつなぎ合わせる部分で拒絶されているんですが WIN2000固有の問題なんでしょうか? WIN2000もACCESS2000です。
774 :
デフォルトの名無しさん :03/07/08 13:05
>>772 Accessのみで完結するシステムなら別に全角文字でも構わないけど、
外部データベースをODBC経由で使うように修正するとなると面倒くさいことになるかもね。
>>773 こんな質問では回答できないと思われ。
おまいは自分の質問を読み直したか?
その内容で他人に伝わると思ったのか?
>773 ほんとうか?本当に文字列連結でコケているのか? Cintでコケとるのと違うのか?
エラーが出るならエラーメッセージを書き込めバカ
778 :
デフォルトの名無しさん :03/07/08 16:07
>>775 おれの文章力はこんなものなのでお許しください。
>>776 Sumとか使って連結してるとこでも問題がおきているので。
[R]は01,02,03〜12まで
クエリーのデザインビューを開くとSQLビューしか開けない。
98SEではマクロのなかのクエリーで今日も正常にうごいています。
Access2.0から95のときも文字列も編集のやり直しにはくろうしたが、
WINDOWSを変えても問題がおきるんですか。
ちなみに俺のやってるのは競馬新聞作成。参考資料
http://weg.infoseek.livedoor.com/03.pdf 宝塚記念の新聞です。
779 :
デフォルトの名無しさん :03/07/08 16:20
>>777 クエリ式'(Right(" " & Sum(IIf([tr]="ダ",[acc1],0)),3)+Right(" " & Sum(IIf([tr]="ダ",[acc2],0)),3)+Right(" " & Sum(IIf([tr]="ダ",[acc3],0)),3)+Right(" " & Sum(IIf([tr]="ダ",[acc4],0)),4))'この関数は式では使用できません
780 :
デフォルトの名無しさん :03/07/08 16:22
781 :
デフォルトの名無しさん :03/07/08 16:31
>>778 新聞貼るより、テーブルの説明が必要
データ型が不適切か、Nullが入っているのでは
784 :
デフォルトの名無しさん :03/07/08 17:14
>>782 クエリ式'joumei([JO]) & Right(" " & CInt([R]),3) & "レース"' この関数は式では使用できません
マクロを実行するとうえのエラーそのクエリを単独だと779
joumeiはユーザー定義関数
785 :
デフォルトの名無しさん :03/07/08 17:29
ACC1ACC2ACC3ACC4KETTOFKYOJOTRBA 0013A.P. Indy 1200京ダ 0001A.P. Indy 1200京ダや 0003A.P. Indy 1400京ダ 0002A.P. Indy 1400京ダや 1015A.P. Indy 1800京ダ
786 :
デフォルトの名無しさん :03/07/08 17:47
acc1,acc2,acc3,acc4 数値型 KETTOF、KYO、JO、TR、BA テキスト型 NUllはない。 をクロス集計し、テーブル作成するクエリー
なんか変な呪文が書き込まれてるな
788 :
デフォルトの名無しさん :03/07/08 20:54
>>788 新しいMDBファイル作って、すべてをインポートしろ
JPEG画像の圧縮、結局Accessでやるの断念しました。 結局、昔買ってずーっと使ってなかったVB4(笑)で作って外部起動することにしました。 ついでに、画像サイズの変更だけじゃなく回転とかの機能も付けて。 やはり、Accessだけだと細かいところが辛い・・。
791 :
デフォルトの名無しさん :03/07/09 16:33
>>789 ありがとうございます。
ACCESS2.0から受け継いだDBがもんだいだったみたいです。
新規作成して、インポートしたら無問題でした。
インポート時にこんなエラーもでました。
このデータベースは不正な状態のためひらくことができません。
「ツール」メニューの[変換」コマンドでなくDAOのCompactDatabase
メソッドをつかって.....データベースの1部が正しく変換されていません。
これがでてからは開こうとすると100%このメッセ維持でした。
おれに正規のワザ以外つかえるわきゃないのにね。
おさわがせ。
792 :
デフォルトの名無しさん :03/07/09 16:48
単発質問すいません。 レポートの表示で、フッタのみが表示されない状況となっている場合 どのような原因が考えられますでしょうか?以下の様なレイアウトになっています。 -ヘッダ----- 料金の合計 ID 金額 -詳細----- 01 100.5 02 50.5 03 65 04 35.5 -フッタ----- 小計 =Sum(金額) 本来であれば小計の右側に(金額)フィールドの値の合計[251.5]が 表示されると思うのですが、フッタそのものが全く表示されません。 =Sum(金額)のエラーだけであれば「#エラー」などと出る筈なのですが・・・? 詳細の金額フィールドはもともと小数点以下を表示しない状態になっていました。 フッタの小計に関してはそのままです。書式の設定は、どちらも行っていません。 どなたかご教授頂ければと思います。
すんませんageます。
フッタの可視 レポートフッタ?
ネットにつながっているLinuxサーバのIPが200.200.200.200で、 そのLAN内に192.168.0.1のDBサーバがあるとします。 192.168.0.1のDBサーバに外部からAccessで接続する 手段はあるのでしょうか?
799 :
デフォルトの名無しさん :03/07/11 23:16
DBサーバ? ファイルサーバでしょ?
iptablesの静的マスカレードの設定で 200.200.200.200:DBサーバのポート#のパケットについて 192.168.0.1のマシンに転送させるようにする。 またDBサーバから返すパケットについても外に出すように しなければならない。 っていってもAccessユーザに言っても理解不可能かもな...
>>799 ODBC接続対応DBMSかもしれんぞ MySQLとかPostgreSQLとか
>>802 ハッカーキボン厨だから、相手にすんな。
>>797 さんありがとうございます。
フッタの可視は、すべてONになっているのですが・・・。
どうしようもなかったので、新しいMDBにエクスポートし直したら直りました。
アドバイスありがとうございました。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
807 :
デフォルトの名無しさん :03/07/17 22:43
age
808 :
デフォルトの名無しさん :03/07/19 05:29
テクニカルな質問ならpin's Laboratoryの方がいいよ。 あそこは素晴らしい!
>>808 禿げしくガイシュツだが、あそこは初心者向け。
知ったか、厨房の集まりダヨ。
810 :
デフォルトの名無しさん :03/07/21 20:27
登録されたデータを検索する機能の実装に悩んでいます。 2003年01月01日より10日以内 と指定された場合、 去年のデータをひっぱってくるべきでしょうか? 私はひっぱってくるべきと思うのですが、 身近な人から反対され悩んでいます。 いかがでしょうか?
>>810 2003/1/1〜2003/1/10 なのか 2002/12/23〜2003/1/1 どっちよ
オレは前者だと思ったよ
「2003年01月01日より10日以内」てどうやって入力するのかな
直感的に理解できないインタフェースは止めれ
>810 私も2003/1/1〜2003/1/10だと思った。 基本的に ×/×/×〜○/○/○ と言う指定にした方が良いと思うけれど? あるいは基準日×/×/× 前○日 後△日の指定とか。
>>811-813 レスありがとうございます。
インターフェースについては問題が解決した上で考えるつもりでいます。
私は
2002/12/13〜2003/01/10
と思いました。
今日から10日以内にこれだけの仕事をこなせ!
といわれると未来10日を指しますが、
ポイント100から5以内と言われると95〜105を指しますよね?
ですので2002/12/13〜2003/01/10だと思っています。
「今日から」と未来10日
今回は過去の日付を指定するので指定日より後ろも含める必要があるのかと
思っています。
どうでしょうか。
現在のインターフェースはコンボボックスやらテキストボックスやらで
X月X日 【より/のみ/以前/以降】X日【以内/以前/以降】
みたいな感じです。【】はコンボボックス
必要に応じてEnableを切り替えています。
そこで一番後ろのコンボボックスに「以内」を指定した時の処理に困っています。
↑ 「今日から」と未来10日 →「今日から」なら未来10日 でした。 文面的にわかりにくいので訂正させていただきます。
何だか難しいですね。 私は期間による検索の場合テキストボックスを2つ用意しています。 【yyyy/mm/dd】(A) 〜 【yyyy/mm/dd】(B) で、 1.前の指定がない場合は、全データの【yyyy/mm/dd】(B)以前 2.後ろの指定がない場合、全データの【yyyy/mm/dd】(A)以後 3.【yyyy/mm/dd】(A)及び【yyyy/mm/dd】(B)の指定があればその期間 4.ただし【yyyy/mm/dd】(A)=【yyyy/mm/dd】(B)ならば【yyyy/mm/dd】(A) 5.【yyyy/mm/dd】(A)>【yyyy/mm/dd】(B)ならば期間は【yyyy/mm/dd】(B)〜【yyyy/mm/dd】(A) と判断させています。 テキストボックス【yyyy/mm/dd】(A) 〜 【yyyy/mm/dd】(B)の他に 基準日を【yyyy/mm/dd】(A)として 以前【×】日 以後【○】日と言うテキストボックスを設けては? この場合、以前【×】日あるいは以後【○】日に入力した場合は、【yyyy/mm/dd】(B)はクリアされ、 【yyyy/mm/dd】(B)に入力した場合は、以前【×】日あるいは以後【○】日がクリアされる。 ちなみに>814の X月X日 【より/のみ/以前/以降】X日【以内/以前/以降】 の【以内/以前/以降】は例えばX日"間"【前後/前/後】の方が通じ易いのでは?
私なら 開始日 指定あり/なし 日付 終了日 指定あり/なし 日付 とするけど・・・あと、○日間、というのが欲しければ追加して・・・ SQLに直した時、指定しやすい様に設計したほうがよいのでは・・・
818 :
デフォルトの名無しさん :03/07/22 00:59
Access XPでデータベースの暗号化/解読ってありますが、 これ繰り返してたら今どっちなのか分からなくなったんですけど、 どうやって確かめるんですか?
>819 それでいいと思う。シンプルにする事で余計な作業が減る。 Windowsのファイル検索の条件指定UIも参考になるかもね。
教えてクレよー
>>821 反応が無いのは、たぶん、誰も知らないんだよぅ(w
>>822 気になって試しちまった・・・
Access2000だと、暗号化/解読で、暗号化/解読元データベースを選択した後、
暗号化先データベースの選択画面になるか、解読先の選択になるかで
わかると思う。XPでも同様と思われ。
ファイル自体が小さければ、メモ帳で開いても分かるが・・・
824 :
デフォルトの名無しさん :03/07/25 09:18
>暗号化先データベースの選択画面になるか、解読先の選択になるかで Access XPではどちらも「暗号化先データベース」で見分けがつかん。 秀丸で開いてファイル内容比較すると確かに違うのだが、どっちが どっちか分からん。 どうすればいい?
825 :
デフォルトの名無しさん :03/07/25 18:33
●暗号化すると 1.暗号化していないファイルに比べファイルのサイズが大きくなる。 2.圧縮(LZH化など)してもほとんど圧縮できなくなる。 暗号化していないファイル:100Kバイト→5Kバイト 暗号化しているファイル:104Kバイト→101Kバイト ってな感じ。
>>824 再び2000の場合で申し訳ないが、
・暗号化されてない場合、
Program Files、Libraryなどの単語(間に若干、余計な文字が入る)、
Name="db1"(ファイル名がdb1.mdbの場合)などが
読み取れる
・暗号化されている場合、
先頭行のStandard Jet DBは読み取れるが、
それ以降は基本的に読み取れる単語が無い
そんな感じです・・・あとは自らの感覚を信じるのが良いかと・・・
829 :
デフォルトの名無しさん :03/07/26 09:17
Daoで.mdwファイルの作成ってどうやるんでしょうか。 Access XPでセキュリティウィザードを実行すると.mdbファイルが .mdwファイルからしか開けなくなりますよね。それをDaoで行いたい んですけど、やり方がわかりません。
ちょっと調べてみたけど難しいようだ。 CDaoDatabase.Create()で.mdbが作成できんのに、なぜCDaoWorkspace.Create() で.mdwが作成できない。
832 :
デフォルトの名無しさん :03/07/28 12:30
DAO でレコードセットを作成し データを単票フォームには表示出来るんですが データシードビューでの表示がうまくいきません どうやったら良いのでしょうか
833 :
デフォルトの名無しさん :03/07/28 15:52
Access2000で時間間隔を格納したいんですけど、データ型って 日付/時刻型ではなくテキスト型なんでしょうか。
834 :
デフォルトの名無しさん :03/07/28 16:06
Access2000の.mdbなんですけど、フィールドの設定値をルックアップ ウィザードで設定している場合、CDaoRecordset.SetFieldValue()で どうやって扱うんでしょうか。
835 :
デフォルトの名無しさん :03/07/28 16:20
838 :
デフォルトの名無しさん :03/07/30 13:28
1.プログラムDB 2.データDB 3.媒体に保存したDB ※1はリンクテーブルとして2を使用しています。 実は3の1テーブルを2に保存(更新)したいのですが、 プログラムで制御する方法はないでしょうか?
1から3にリンク張って2へUpdateすりゃいいだけでわ?
840 :
デフォルトの名無しさん :03/07/30 16:42
>>838 FROM TBL IN A:\DB.MDB
VBAでテーブル定義を変更したいのですが、 変更先のmdbが使用中だと変更できません。 そこで、 if db.tabledefs("tablename").updatable then 変更処理 end if というようにupdatableでチェックしようとしたのですが、 mdbが使用中にもかかわらずtrueが返されます。 もちろん変更処理でエラーが発生して止まってしまうのですが、 なにか間違ってますか?
>838 私は1.実行プログラム部 2.データ部(リンクテーブル)に分け、 1.でボタンを押すとネットワーク上だろうがFDだろうが他ドライブへでも データをバックアップするようにしたよ。 リンクテーブルをバックアップするのに非常に苦労した。 結局テクニックと知識がないので、 1.バックアップ指定個所にバックアップ用のmdbを作成 2.一度リンクテーブルのテーブルを実行プログラムmdbに一時テーブルとしてコピー 3.実行プログラムにコピーされた一時テーブルをバックアップmdbにコピー 4.バックアップし終えた一時テーブルを削除 と言う方法で処理している。 他には、パススルーを使うとか、CompactDatabaseを使う方法があると思う。
(^^)
保守
Access2000で質問です。 テーブルデザインで、テキスト型のフィールドの「書式」に 「\\#,##0」と設定し、通貨型と童謡の表示方法にしようとしたのですが、 書式が無視され、そのまま表示されてしまいます。 試しに書式「yyyy/mm/dd」と設定し、日付を入れてみても反映されません。 なにか書式を有効にする手順が必要なのでしょうか? 本当は通過型にしたいのですが、文字列が入る場合もあり困っております。 よろしくお願いします。
>>845 文字列を入れないようにして数値型にするか、書式表示を諦めるかのどっちか
>>845 >>ヘルプ("Format/書式" プロパティ)
>設定値は、データ型によって異なります。
848 :
デフォルトの名無しさん :03/08/09 10:46
ACCESSの質問よろしくおねがいします。 レポートのレコードソースにクエリを設定して、 詳細にレコードデータを出しているのですが、 詳細結果の幅が結果によって違うのです。 項 目 ---------・・・詳細 1 A B C D 2 A B C D ←ここが空いてしまう。 3 A B C D もっと条件を書かなくてはいけないけど、 とりあえず、考えられる原因わかる方いらっしゃいますか?
……横幅?
ごめんなさい。縦幅です。 項 目 --------- ・・・詳細 1 A B C D 2 A B C D XXXXXXXX ←ここが空いてしまう。 3 A B C D 2と3の間があいてしまうんです。 Dの部分はサブレポートになっていて、 親フィールドと子フィールドとのリンクをしています。 見てみると、どうもこのDに値がない時は、縦幅が レポートの詳細幅どおりになるのですが、Dに値がある時に なんとなく1のレコード分のの幅があいてしまうのです。 今も作ってる最中です。 納期があるので、焦ってます(>Q<)
>>848 ,850
さっき試してみたが、再現性がない。
1.とりあえず、親レポートの詳細セクションの背景色を変えて
サブレポートが表示されている部分の大きさを確かめる。
2.サブレポートの縦幅がおかしいなら、プロパティをデフォルト以外の
値にしたところを探ってみる。(ヘッダ、フッタが悪さしているのでなければ、だが。)
3.それでだめなら、納期が延びることを祈る。
これでどうだろうか。条件不足で分からんので。
851さんすみません、 再現してくださって、ありがとうございます(T_T) 説明したいのですが、簡潔に説明出来ないんです。 (時間がないのでメモも書いてなく、作りが思い出せない) 1.2.はある程度試してたんですけど、未だ解らず・・・ レイアウトの事だから、とりあえず今は最後にまわしてみます。 しかし終わるのかな〜、、もう泣きそうです。
853 :
教えてください :03/08/13 21:46
下記で承認CKがyesの場合に、状況に1を設定するようにしてるのですが それと併せて承認CKがNoの場合に状況に0を設定するようにしたいんです。 どなたかご教授ください Private Sub 承認ボタン_Click() If MsgBox("承認して宜しいですか?", vbYesNo + vbQuestion) = vbYes Then DoCmd.SetWarnings False DoCmd.runsql " UPDATE 承認テーブル SET 承認テーブル.状況 = 1" _ " WHERE 承認テーブル.承認CK = Yes ;" DoCmd.SetWarnings True End if End Sub
上の848です。 あの〜私初心者なんですけど、 If文にElse使うか、Select Case で普通に出来ないんですか? どこでエラーが起きるんでしょうかね?
855 :
デフォルトの名無しさん :03/08/14 01:59
>>853 何がわからんのか、もうすこし具体的に書け!
なめた質問すんな!
>>854 おまえも同類。
仕事ならプロ意識を持て!
こういう場所でも、きちんと設計解説できなきゃ
結局干されるよ、おまえ。
おまえら、当たりが来たらラッキーぐらいにしか思ってないだろ。
自分が回答する立場なら、どう思うか想像してみ。
>>853-854 気弱な855さんが勇気を振り絞ってカキコしてるってのに、反応無しかよ。
857 :
デフォルトの名無しさん :03/08/14 02:14
まだ15分しかたっていないぞ(^_^;)
853(21:46)、854(22:24) 855(翌01:59) ゴルァ!ゴルァ!
Accessで業務ソフト作っちゃうくらいだから文章による論理立った説明 なんて出来ないに決まってるじゃない?
>>858 855と856の間は7分しか経っていない。
>>859 Accessで業務ソフト作っちゃう人たちの根性を侮っちゃあいけないよ。
論理とかそんなものは余裕で超越してる。
倫理もな
Accessで済むものをVB+Oracleで作るのもどうかと思う。 だまされるユーザがバカなのよといえばそれまでだが。
>853 私なら以下を付け加え dim rdt as integer 以下を変更してみる rdt=MsgBox("承認して宜しいですか?", vbYesNo + vbQuestion,"承認確認") select case rdt case vbyes DoCmd.SetWarnings False DoCmd.runsql " UPDATE 承認テーブル SET 承認テーブル.状況 = 1" _ " WHERE 承認テーブル.承認CK = Yes ;" DoCmd.SetWarnings True case vbno msgbox"承認されませんでした。",vbokonly,"承認却下" End select これでどうだろうか?
書き忘れましたが、承認を却下した時の処理に 0にする処理を書いた方がいいと思いますよ
848です(^_^)
>855
いや〜ごめんなさいです。。。
854につけたレスは、上の853さんに対してコメントしたものだったんですけど・・・
>>853 ってつけるの忘れてしまいましたでつ。
因みに私が853に言いたかった回答は、
上の865さんがちゃんと書いてくれてました。
Select Caseの方がスマートになっていいですよね。
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
>>867 そうかもしれないと思ったから、「同類」と書いた。
回答するなら、自分のスキルのいいわけなんぞしてもしょうがない。
自分で正しいと思ったことを書けばいい。(もちろん、確証が泣ければ検証すべきだけど)
俺も何年かここで質問回答してるけど、あからさまなDQNより微妙なほうが感にさわったりすんのよ。
勝手に切れる俺も俺だけどね。
まあ、好きにやってるからそんなに気にせんでくれ。
丁寧な返信あんがとさん。
まあがんばって、回答も出来るようになってちょ。
やっと基地外がいなくなったか。
タブキーでサブフォームに移ったフォーカスを 再びタブキーでメインフォームに戻らせたいのですが、 どうすればよいのでしょうか?
872 :
デフォルトの名無しさん :03/08/20 21:12
質問なのですが、DAO使ってSQLでmdbにcreate文でテーブル作ろうと したるんですが、AutoNumberってデータ型的には何宣言すればいいんですか? 厨質問ですいませんが、もしよろしければ教えて下さい。
コントロールに記号付けれるのに 女医互換ないなんて・・・
Accessの質問です。 SQLServerからリンクテーブルを使ってmdbにテーブルを取り込むのですが、 この時に、主キーのないテーブルに対してリンクテーブル側のみにキーを設けたいと思っています。 リンクを作るダイアログに沿っていけば上記のことが可能なのですが、コードを記述して実現することが出来ません。 どのようにすれば出来ますでしょうか?
>>871 タブキーで移ったんなら、バックタブじゃないの。
Shift + Tab
>>872 counterか autoincrement
>>874 やったことないんでわからんですけど、
最初にAccessで主キーを設定したテーブルを作っておき、
VBAでSQLServerに接続して、1レコードずつ落としてきたら
うまくいきませんかね?
ああ〜こんな回答したら、怒られちゃうかな。。
878 :
デフォルトの名無しさん :03/08/22 12:19
へんな質問ですけど メモ型フィールドってそのまま同士では クエリーなんかで比較ができなかったような記憶があったのですが 今やってみたらすんなりいくんですよ。 たしかCstrでテキストにしないとだめだったような… まぁできてるので問題ないですよね 自分なにと勘違いしていたのでしょう…
879 :
デフォルトの名無しさん :03/08/22 16:19
Access2000でadpを使ってフォームを作成したのですが、 フォームプロパティにレコードロックの設定がありません・・・。 データタブのところ見てるんですが、見当違い?? 編集済みレコードのみロックとか、どこで設定するんでしょ?
In article
>>879 , 仕様書無しさん/sage/879 wrote:
> Access2000でadpを使ってフォームを作成したのですが、
Accessをつかってるじたいがもんだいですね :)
> データタブのところ見てるんですが、見当違い??
> 編集済みレコードのみロックとか、どこで設定するんでしょ?
考えるくせがついてないですね。:-)
881 :
デフォルトの名無しさん :03/08/26 20:16
100レコードあるうち、古い順に50件削除とかって出来ますかね。 出来たらSQLで。 出来たら教えて下さい。
882 :
デフォルトの名無しさん :03/08/26 22:31
>>881 その50番目になりうる対象のレコードが2レコード以上あったら、
全部削除?そうでないなら、どの条件のレコードを削除?
>>883 えっと、登録日って日付のフィールドがあるんで、そこの日付が古い順です。
50番目が同一日で2レコード以上あったら、その日は全部消しちゃって
構わないんですが、何か方法有りますでしょうか?
>>884 理屈としては、一番古いレコードの日付と50番目のレコードの日付を
取得して、Between句で括ってDeleteって感じになると思う。
コード記述しないと無理と違うか?
>>884 横レスになりますが、これでどう?
DELETE * FROM T_Hoge
WHERE EXISTS(
SELECT TOP 50
FROM T_Hoge AS T_Alias
WHERE T_Alias.F_DATE = T_Hoge.F_DATE
ORDER BY T_Alias.F_DATE)
>>886 ありがとうございます。
EXISTSってよく分からんかったんで、
INでやってみたんですが、ちゃんと削除されました。
delete from table
where 日付 IN(select TOP 10 日付 from table ORDER BY 日付)
こんな感じで・・・・「TOP 50」って便利だな、これ。
すいません、ありがとうございました。
888 :
デフォルトの名無しさん :03/08/28 14:01
test
889 :
デフォルトの名無しさん :03/08/29 11:06
>>838 DoCmd.CopyObject パス名, , acTable, "テーブル"
890 :
デフォルトの名無しさん :03/08/29 11:12
DoCmdがDoCoMoにみえた
892 :
初心者に毛が生えた :03/08/30 15:27
Access97時代は、わりとAccessをつかっていたのですが、 ここ数年まったくさわっておりませんでした。 久々にAccessでプログラミングをしなければならない状況になったのですが、 どうにも分からない事が1点発生しました。 Recordセットをおこなおうと思い、下記の記述をおこなったのですが、 dim xDB as database dim xRS as recorset set xDB = crrentDB 〜〜〜〜以下省略 さ、コンパイル・・・って実行したら「xRS as database」ってところの色が 反転して、「コンパイルエラー:ユーザー定義型は定義されていません」 っていうエラーメッセージがでました。これって、databeseは定義型として 使えないっつー事・・・???? これは、どういうことでしょうか?どなたかしっているかたがおられましたら 教えてください。 ※ 多分、とても基本的なところで失敗しているような気がします。
>892 こう言うときはバージョンを記述しれ。 つっても2000以降である事は確実だと思うが。 Access2000以降はDAOではなくADO使用がデフォルト。 DatabaseオブジェクトはADOに無いので、件のエラーが出る。 参照設定でADO外してDAOにチェックつければ解決。
894 :
初心者に毛が生えた :03/08/30 15:32
↑書き忘れましたが、Access2002でプログラミングしております。 どなたか助けてください・・・
895 :
デフォルトの名無しさん :03/08/30 15:36
896 :
初心者に毛が生えた :03/08/30 15:39
893> ありがとうございます。大感謝・・・これに2時間くらい悩んでおりました。 おかげさまで、無事コンパイルが出来るようになりました。。。
>892=894 893さんが回答してまつ。 VBE開いてツールメニューの参照設定をみてみてね!
898 :
初心者に毛が生えた :03/08/30 15:55
897> ありがとうです。。 これって、かなり基本的なところでつまずいてましたね・・ ちなみに、このプログラムを別のクライアントで動作させる場合は 実行するクライアント全てに、同じ設定をする必要ってあるのでしょうか?
必要だよ〜
まじ? 参照設定はmdbファイル毎に設定されるはず。 別のPCに持って行っても有効になるはずだが? 試しに、DAOを有効にしてるファイルと無効にしてるファイルを 同時に立ち上げて両方の参照設定を確認してみ。
え!? そうなの? 前にファイルサーバに置いておいたmdbを 複数のクライアントが使おうとした時に 駄目だった気がしたんだけどー ・・・と書いていて気が付いた!! ゴメン!! その時はACCESS97なのに、ADOを使おうとしたのよね。 デフォルトだと使えないから、わざわざ入れたのですた。。。 ゴメン、大嘘でしたかも。。。 前レスのとおり、私も初心者なので、許してね・・・
902 :
初心者に毛が生えた :03/08/30 17:10
う〜ん。 とにかくためしてみるっす。 ロンより昌子ですものね・・・ ところで、今回の件、がクリアできたことでさくさく仕事がすすんでます。 久しぶりに、プログラマーもどきをやっている次第です。 皆様にあらためて感謝。。。
903 :
デフォルトの名無しさん :03/08/30 17:11
904 :
デフォルトの名無しさん :03/09/04 12:35
あげ
905 :
初心者に毛が生えた :03/09/05 13:37
コンボボックスをつかって、商品マスタを表示させているのですが 大文字・小文字を識別してしまいます。 細かいはなしなので、運用でカバーしてもらえばよいのですが 大文字・小文字を識別しないやり方をご存知のかたがおられましたら 教えてください・・・ また、IMEコントロールでは、全角・半角・カタカナ・ひらがなの制御 は可能ですが、英文の大文字・小文字制御は出来ないのでしょうか? これも、ご存知のかたがおられましたら、教えてください・・・
入力後に Strconv すれば済まないか?
907 :
デフォルトの名無しさん :03/09/10 11:09
□□□ 111 112 211 ↑のような□(テキストボックス)が3つ並んでいて、 下の数値はデータとなります。 このテキストボックスに数値を入れEnterキーを押すと 列から該当するデータを抽出するプログラムを作成したいのですが 何か良い方法はないでしょうか? データの抽出は一番左の□に1を入れると、 この列の1の数値が抽出され、 □□□ 111 112 のデータが画面に表示されます。 一番右の□に2を入れEnterキーを押すと □□□ 112 のデータが画面に表示されるというのやりたいのですが いかがでしょうか? Indexとサブフォームを使用した例は見たことがあるのですが、 こちらのテーブルが主キー等を使っておらず、Indexは使えません。 それとDBの形式はADOを使用しております。
テキストボックスに入力された値でデータを抽出・表示するプログラムを書くだけっしょ。 何が分からんのか分からんよ。 あと、ADOはミドルウェアであってDBじゃない。
909 :
デフォルトの名無しさん :03/09/10 11:32
画面上でデータを更新表示する部分が分からなくて困っています
>>909 俺も何が分からんのか分からん。
連結フォームなら勝手に更新されるハズだし
非連結フォームでもRequeryで更新されるハズでしょ。
SQL文投げても同様。
あ、まさかイベントプロシージャを知らないって事は(ry
911 :
デフォルトの名無しさん :03/09/10 13:41
>>910 Set DB1 = DBEngine.Workspaces(0).OpenDatabase(DBNAME)
Set DS1 = DB1.OpenRecordset("TBL_マスター", dbOpenTable)
DS1.Index = "コード"
DS1.Seek "=", Me![コードヘッダー]
If DS1.NoMatch Then
Beep
MsgBox "入力したコードがマスターに存在しません!" & Chr(13) & "確認して再度入力してください。", vbExclamation, "注意"
DoCmd.GoToControl "コードヘッダー"
End If
DS1.Close
DB1.Close
さっき急に話を振られてパニック状態です。
書いてあることは何となく理解できたのですが
IndexやSeekを使わない前提で考えると訳が分からなくなってしまいます。
例プログラムを上げてもらえないでしょうか?
>>911 909の時点でなにをどうしたいと言っているのか
具体的な説明をおながいする
つか
>>910 のカキコをどう理解すると
IndexやSeekを使わない前提になるんだ?
>>911 俺はキミが更新表示出来ないって逝ってるからRequeryしろって
返しただけなんだが・・・。
つーか、何だか根本的に発想が変なんじゃない?
表示したいレコード数が一つとは限らないんだろ?
FilterプロパティかSQL文のWhere句でフィルタ掛けた方が楽だろ。
Field1を抽出の対象にする場合、TextBox1のAfterUpdateイベントプロシージャに
Me.Filter = "Field1=" & Me.TextBox1
Me.FilterOn = true
と書くだけでフィルタ掛かるが?
TextBoxが3つある場合は別のプロシージャにIf文で条件分岐して、そのプロシージャを
各TextBoxのイベントプロシージャから呼び出す。
SQL文を投げる場合は
"Select * From TBL_マスター Where Field1 = " & Me.Textbox1 & "And" & " Field2 = " _
& Me.TextBox2 & "And" & " Field3 = " & Me.TextBox3
質問の意図と違うかもしれんが・・・。
>911 とりあえず「Access入門」みたいな本を一冊買って読んでみれ。 Seekを使わずに検索する方法なんていくらでも載ってるから。 本買うのが嫌ならAccessでSQLを使っての検索の方法をぐぐれ。 っつーか、>911のコードってまるっきりDAO使用だと思うんだがw
プロバイダがSeekメソッドをサポートしてるかどうかも疑問
916 :
デフォルトの名無しさん :03/09/10 17:42
給与計算で十進データを扱っているんですが、 Me![小計] = Me![稼動給] * Me![稼動時間数] (入力項はいずれも十進数の精度18桁) という単純な掛け算で、正しい値はabxであるところが aby.99999(y=x-1)という値が小計に返ってしまいます。 有名な問題だとは思いますが、いざ探してみると見つからないものでして、 返答および解説ページの紹介きぼんぬです。
917 :
916自己レス :03/09/10 18:11
散々苦労した挙句の発言だったのですが、なんとか自己修正できました。 通貨型を使うとはビックリ。
918 :
デフォルトの名無しさん :03/09/10 21:25
AccessでEAN128のバーコードは、レポートに出力できるのでしょうか?
mdbに対してSQLを投げたところテキストのフィールドの文字列の右側が勝手にスペース埋めされてしまいます。 これを回避する方法はありますでしょうか? SQL文では、普通にTrimかけられた文字列で代入しようとしているのですが・・・
921 :
デフォルトの名無し :03/09/11 19:14
どなたか、13桁バーコードのチェックデジットの関数を作った事のあるかた ネタもらってもよろしいでしょうか? ※ 昔つくったのですが、どこにしまったのか分からなくなってしまい・・・
922 :
デフォルトの名無し :03/09/11 19:15
>>920 SQLの例文を書かないとわからんぞ・・
あまりにも平凡なInsert文なのでmdb側の問題かと思ってました。 SQLはこんな感じです。 INSERT INTO T_VIEW_MST VALUES ( 'Icon', 2, 'zzzaa1', 'O1200AR0317.bmp', 'aa', 'bcd', '2', '234', 'メ`', '1', '2003_09_09', 'ootNI' )
924 :
デフォルトの名無しさん :03/09/11 19:29
ほんと、平凡なSQLですね・・ なにか、テーブルに変な設定とかしてません? ※ 手入力や、追加クエリでやっても同じ結果になる? 文自体は、なんの問題もないような・・・
追加クエリですか、レスありがとうございます。 やってみます。
クエリでSQL文(同じもの)を記入して実行してみましたが、同様に文字列の右側が最大文字数までスペースで埋められてしまいます。 そういうフィールドの設定というものもあるのでしょうか?
928 :
デフォルトの名無しさん :03/09/13 17:05
929 :
デフォルトの名無しさん :03/09/16 13:51
顧客情報の「t_顧客」、売上明細情報の「t_売上」、入金明細情報の「t_入金」 以上の3つのテーブルがありまつ(すべて元がODBCテーブルをリンクしてmdbで使用) ある条件で抽出される顧客(複数)の現在残高を取得したろ思い、 条件で絞り込んだ「t_顧客」と、顧客単位でグループ化した「t_売上 - t_入金」の集計、 それぞれをクエリで作成して、最後に一つのクエリでそれらをJOINさせてみました。→(1) んが、「t_顧客」側の条件に何を指定しても(例えば抽出後の顧客が1件だったとしても) 「t_売上 - t_入金」の集計に時間が掛かっちまって仕方ないんで、 次は、「t_売上」と「t_入金」のそれぞれに「t_顧客」を直接ぶつけて、 条件で絞り込ませながらの顧客単位のグループ化、及び集計をやらせてみました。→(2) (2)のは、抽出後の件数が少なければ少ないほど計算が速く終わって気持ち良いんですが、 それを更に別のクエリとぶつけて、場合によっては更に顧客が絞り込まれる、という状況を作ったら、 指定する条件によっては、最終的にまともな結果セットが返ってこないことがあるようでふ。 そういう場合は(1)を使えば、まともな結果セットが返ってくるんだけど、もう遅くて遅くて。 プログラムは組まずに、この遅さ/不安定さをなんとかする方法はないですか?
参考として、
>>929 の(2)で使っているクエリ。
これを更に顧客単位でグループ化させて、現在残高を求めとります。
-----
PARAMETERS [p_顧客CD_from] Long, [p_顧客CD_to] Long, [p_担当者CD] Long;
SELECT t_売上.顧客CD, Sum(t_売上.売上額 + t_売上.消費税) AS 金額
FROM t_売上 INNER JOIN t_顧客 ON t_売上.顧客CD = t_顧客.顧客CD
WHERE (t_顧客.顧客CD Between [p_顧客CD_from] And [p_顧客CD_to])
AND (([p_担当者CD] = t_顧客.担当者CD) OR ([p_担当者CD] Is Null))
GROUP BY t_売上.顧客CD
UNION ALL
SELECT t_入金.顧客CD, -Sum(t_入金.入金額)
FROM t_入金 INNER JOIN t_顧客 ON t_入金.顧客CD = t_顧客.顧客CD
WHERE (t_顧客.顧客CD Between [p_顧客CD_from] And [p_顧客CD_to])
AND (([p_担当者CD] = t_顧客.担当者CD) OR ([p_担当者CD] Is Null))
GROUP BY t_入金.顧客CD;
931 :
デフォルトの名無しさん :03/09/18 11:59
>929 レコード件数がそれぞれどのくらいなのか分からないのでなんともいえないのですが 単純にレスポンスを上げたい場合の対処方法として、以下の対応は如何でしょうか? @ 抽出対象を一旦テーブルに書き込む → グループ化しているクエリをJOINしてクエリの入れ子を行うと 遅くなってしまうので、グループ化した結果を一旦テーブルに書き込み その結果をJOINすれば、処理効率はあがると思います。 A パススルークエリを使う 私は、DAO使いなのでODBC経由でORACLEやSQLServerを利用しております。 Accessのクエリを使うとどうしても思うようなレスポンスがとれないので 抽出や集計をサーバー側にタスクを渡すパススルークエリを利用します。 B @Aの併用 パススルークエリとローカルテーブルへの書き込みを併用して処理すれば 一番早い処理が可能だとおもいます。 アバウトな答えになりますが。。。どうでしょうか?
932 :
デフォルトの名無しさん :03/09/18 14:14
お願いです。 N*Nの盤面にチェスのクイーンをN騎ならべて、どの2つの駒も互いに張り合わない 配置を全て求めるプログラムをjavaアプレットで作ってくれませんか? ほんっとにお願いします。今、命が危ないんです。
933 :
デフォルトの名無しさん :03/09/18 14:23
932です すれ違いでした。 ごめんなさい。逝ってきます。
>>931 レスありがd
> レコード件数
肝心なのが抜けてましたね。すまんです。
「t_顧客」は、5,000〜10,000レコード程度
「t_売上」と「t_入金」は、それぞれ1,000,000レコード未満
> @ 抽出対象を一旦テーブルに書き込む
サーバー側のワークテーブルをクライアント側から使用するのは、
多い所でクライアントPCが10台以上になる自分とこのシステムでは禁止されとります。
そうなるとクライアント自身で用意するしかないんだけど・・・言わずもがな。
> A パススルークエリを使う
導入時の面倒臭さからパススルークエリは使わないようにしてます。
かといって今回の話は期間限定のサブシステム上の話だったりするので、
ビューやストアドプロシージャなんかを作成するのもどうかと思われ・・・m(__)mスマソ
ってーわけで、
最終的に抽出される顧客件数は「多くても200〜300件程度」というSEの話を信じて
これはもうレポート出力時にDLookUp系の関数で計算させることにしちまいました。
テキストボックスのコントロールソースに↓コレ
=Nz(DSum("売上額+消費税","t_売上","顧客CD=" & [顧客CD]),0)-Nz(DSum("入金額","t_入金","顧客CD=" & [顧客CD]),0)
あーもーしらん
935 :
デフォルトの名無しさん :03/09/18 19:02
あは。。 ま、がんばってください。 ちなみに、Where句とGroupByのクエリを分割して作るだけでも レスポンスあがるかもしれないよ。。ためしてみ
936 :
デフォルトの名無しさん :03/09/18 22:16
Access97ってWinXPでも問題ないのかな? Office97をWinXPで使う上での問題点みたいなHPがあったはずなんだけど見つからない。 MicrosoftのHPにもあったはずなんだけど検索しても出てこないし...
937 :
デフォルトの名無しさん :03/09/19 00:41
VBAで書いたコードにアクセスされないように 隠蔽したいのですが良い方法ないでしょうか? とりあえずmdbにパスワードを掛けて 且つ、開かれているフォームのキーイベントには Ctrl+G キーを無効にする処理を書くつもりでいます。 もっと良い方法ないでしょうか? よろしくお願いします。
Microsoft Office Developer インストールして mde にコンパイルする
>>938 お返事ありがとうございます。
ですが残念な事にOffice Developerが無いのでできそうにありません。。
>>937 に書いたこと以上に隠蔽度を高くできる方法ありませんか?
わがまま言いますが宜しくお願いします。
>>939 AccessはDeveloperじゃなぃてもmdeにコンパイルできますが。
>>940 できました!
ありがとうございました〜。
942 :
デフォルトの名無しさん :03/09/21 18:50
Access2002でプログラミングしております。 だいぶ出来上がってきたのですが、フォームで入力すると、時々 「データの競合」っていって「レコードに保存」「クリップボードにコピー」「他ユーザーによる変更を反映」 って言うメッセージボックスが表示されます。 競合もなにも、自分1人しか入力していないのにこの現象って・・・・ レコードに保存を押せば問題ないのですが、これをユーザーに使わせるのは 少々胸がいたみます。。。 どなたかこの現象の回避方法をご存知のかたがおられましたら、おしえてください。
>>942 少々胸が痛みますって君・・・
君が自身のアプリの動きを掌握できてないのに答えようないではないか。
944 :
デフォルトの名無しさん :03/09/22 11:34
ACCESS 2000で、表形式で表示している明細の カレント行の背景を変えることはできないでしょうか? データシートのときみたいにです。 条件付書式を利用すればできそうな気がするのですが、 条件がわかりません。
明細と同じ大きさのテキストボックスを背景代わりにして それに条件付書式を設定する
946 :
デフォルトの名無しさん :03/09/22 22:37
>942 どこかレコードセット使ってるところなんかでcloseやNothingし忘れたり、 1つのクエリーや書き込み/更新作業が終えてないのにダブってやってる 何てことないかな? VBA使ってるなら、ちゃんとステップバイステップで動作一つ一つ確認して るよね?自分でアプリ作るってことは、そうやって全部1つ1つ自分自身で 確認して考えられるエラーや異常データ、操作をデバッグしなくちゃならない から、動作を掌握できないなんてことはないはずだけど… それとも、掌握できないほどの複雑なmdb作ってるの?
947 :
デフォルトの名無しさん :03/09/22 23:21
942です。 これが、ステップバイステップで動作の一つ一つを確認しながらやっているのですが この現象が出たり出なかったりするのです。 また、場合によっては、自分で作成した関数をクエリーの式として入れているのですが 時々未定義です。ってな事を抜かしたりするんですよ。。アプリを一旦終了して 再度立ち上げるとちゃんと動くんですけど・・・って言うところです。 アクセスにバグか何かあるのかな・・・と思い書き込みました。 ※ レコードセットの場所は、ちゃんとクローズしてます。 最終的には、1つ1つ検証書き直していくしかないかもしれないと半ばあきらめてます・・・
>>945 レスサンクソ
その条件付書式の条件って何?
>>942 昔、ACCESS 97でテーブルの日付型の項目にNULL値をセットした時
そんなようなこと起こった気が...
参考まで。
>947 >自分で作成した関数をクエリーの式として入れているのですが >時々未定義です。 きちんと関数に変数が受け渡しされてないか、関数自体が問題ありじゃないかな? Accessのバグで片付けるより、出たり出なかったりと言うことは出る原因と 出ない要因があるはず(奇数回数は出ないとか初回は出る、立て続けにクエリー 動作させると出る…など) >1つ1つ検証 してないの?コード書く毎に、クエリー書く毎に… コード書く度、クエリー作る度、SQL書く度に一つづつ検証していかないと、デバッグが 追いつかなくなるし、原因が分からなくなるから気を付けた方が良いと思います。
グローバル変数使ってて、ちゃんと値がリセットされてないとか。 再起動しるとちゃんと動くって事は可能性あるな。
951 :
デフォルトの名無しさん :03/09/23 04:49
なぜかメニューバーがなくて 非常に困っています。 どうすれば表示させれるのでしょうか? くだらない質問ですがなにとぞよろしくお願いします。
952 :
(゜Jし゜) :03/09/23 13:44
どうでもいいけど、現在進行形でAccessのVer2.0のメンテナンスさせられています。 2000とかに直接移行できないし、予算も降りないからしばらく現行のままだそうで… トホホ
ツールバーの辺りをを右クリック→ユーザー設定→ツールバーの項目からメニューバーをチェック ってところか?
>953 そこにはなかったのですが、 プロパティボタン押して 選択したツールバーというコンボボックスがあり その中に「メニューバー」という項目があり これを選択後、表示/非表示可能 というチェックボックスを オンにすることで解決しました。 ありがとうございました。
955 :
デフォルトの名無しさん :03/09/27 15:57
DAOで、既存のテーブルのフィールド名を変更することはできますか? (くれくれ君ですみません) 初心者スレってどこかにないでしょうか、、、。
>>955 Sub test()
Dim db As Database, tdf As TableDef, fld As Field
Set db = CurrentDb
Set tdf = db.TableDefs("table1")
For Each fld In tdf.Fields
If fld.Name = "旧フィールド名" Then
fld.Name = "新フィールド名"
End If
Next
End Sub
>>956 あれ、直接変えられるんですか。てっきり変えるためのメソッドがあるかと
思っていました。ありがとうございます。試してみます。
Basicなんて25年ぶりです。Pascalに似てきていてびっくりしています。
Access VBAは始めてから三日なんで、すみませんでした。
Access2003はVisualStyleが適用されるぞ
>>955 ぜひ、モーグもブックマークしておきなされ。
961 :
デフォルトの名無しさん :03/10/06 11:32
保守
VBAでフォームを作って、そのフォームの内容を登録ボタンを押したときに DBに書きこみたいんだけど、フォームに値を入れた時点でDBにはいってしま います。登録ボタンを押したときだけ、DBに書き込むにはどうしたらよいですか? 有識者の方教えてください。かなりせっぱつまってます。
>>962 フォームがテーブルと連結している。
まずフォームのレコードソースプロパティを空にする。
登録ボタンが押された時のイベントハンドラを作成し
その中にテーブルにレコードを挿入するプログラムを書く。
例)
DoCmd.RunSql "INSERT INTO TABLE_NAME(FIELD_NAME) VALUES('TESTVALUE')"
ありがとうございます。 もうすこし例を詳しくお願いいたします。 たとえば、A.DBのA.TBにフォームの項目Aを登録する場合はどのように 書いたらよいでしょうか? お願いいたします。
>>962 と似たような話ですが、accessのフォーム上でデータのbackボタンを
配置してデータの入力途中でその直前のレコードを表示させる為に
Rollbackさせたいのですがうまくいきません。
どうしらいいでしょうか?
テーブル名:ユーザテーブル(仮)
主キー:ユーザID
よろしくお願いします。
終わらないとねれない・・・・
>>964 A_DBの中にフォームがありそのフォームのAというテキストボックスの値を
A_TBの文字列型フィールド「FIELD_NAME」に登録する例。
登録ボタンを配置し、登録ボタンが押されたときに呼ばれる
イベントハンドら内に書くことを前提とする。
Docmd.RunSql "INSERT INTO A_TB(FIELD_NAME) VALUES('" &A.Value &"'"
MsgBox "登録が完了しました。"
>>965 >その直前のレコードを表示させる為にRollbackさせたい
直前?ってことは編集中のレコードじゃなくて?
RollBackは編集中のレコードの編集内容を破棄し、
編集前の状態(トランザクションの開始を宣言された時点)のレコードの状態に戻す動作。
何をやっているのかは知らないがはっきり言うと
今日中にやり遂げる事には無理がある。
あきらめて寝た方がいろんな意味いいと思う。
嫌味でいってるんじゃなくて正直な感想。
では、仕事があるんで寝ます。
おやすみなさい。
↑ 括弧閉じるの忘れた。 Docmd.RunSql "INSERT INTO A_TB(FIELD_NAME) VALUES('" &A.Value &"'" ↓訂正 Docmd.RunSql "INSERT INTO A_TB(FIELD_NAME) VALUES('" &A.Value &"')" こうかな?
>>966 すみません。きのうのは仕様変更で取りやめになりました。
で、ちがう話なんですが。
Select テーブル1.項目1,テーブル1.項目2 From テーブル1 INNER JOIN テーブル1 ON (テーブル1.項目1 = テーブル2.項目1) and (テーブル1.項目1=テーブル2.項目1);
でデータのチェックをしようと思っているのですが。
結合式がサポートされていませんと出てしまいます。
どなたかわかる方いらっしゃいましたらよろしくおねがいします。
…
970 :
デフォルトの名無しさん :03/10/09 12:05
あるフォームから別のフォームを開いたときに、開いたフォームをブラウザでいう ところの、全画面表示にしたいのですが、どのようにしたらよいのか、 知ってる方教えてください。(全画面=ファイル、表示等の上のバーを消したい)
971 :
デフォルトの名無しさん :03/10/10 11:07
問題が発生したため、MicroSoft Accessを終了します。ご不便をかけて申し訳ございません。 モジュールを起動しようとしたら↑のメッセージが出てAccessが終了していまいます。 何か回避策はないでしょうか?
バージョンはOfficeXP SP2です。
×…OfficeXP ○…Access2002
空のMDBを作成して、コピーしたら直りました。 内部のシステムファイルが破損したのでしょうか? 原因分かる方宜しくお願いします。
ああ、そいつはまたそのうち壊れるよ。
976 :
デフォルトの名無しさん :03/10/10 21:11
mdbファイルをLANで数人でファイル共有して使うってのは やっぱりやばいでしょうか? 最近そういうシステムを見て、とくにトラブルも起こってないという 話なので、それでもいいかなと思うようになってきたのですが、 いまいち踏み切れません。
977 :
デフォルトの名無しさん :03/10/10 22:32
[OSのVER]:2000 [AccessのVER]:2000 フォームの最大化(DoCmd.Maximize)をやって、フォームのプロパティ(ポップアップ等) を設定したのですが、どうしても下のツールバー(OSのもの)が隠れません。 ようは、IEなどのブラウザでの全画面表示と同じような全画面表示をしたいのですが、 どうしてもできません。 ご教授ください。
ヤバイ。MDB共有ヤバイ。まじでヤバイよ。マジヤバイ。 MDB共有ヤバイ。 とにかく貴様ら、MDB共有のヤバさをもっと知るべきだと思います。 そんなヤバイMDB共有からRDBMSに移行した奴とか超偉い。もっとがんばれ。超がんばれ。
>976 安定して動いてて、バックアップも万全なら急いで移行する必要は無いと思うよ。 どっちにしろ多数のクライアントが同時にファイルいじる訳だからリスクがあると いう事だけは認識しておいたほうがいい。 そして、次回の改修時にはきちんとしたDBMSへの移行を考えたほうがよい。
980 :
デフォルトの名無しさん :03/10/12 00:21