トップページ⇒tech
1001コメント375KB

Access使い集合!

■ このスレッドは過去ログ倉庫に格納されています
0001名無しきぼうNGNG
UNIX時間(1970年から秒単位10桁やつ)を
Access or VB で yyyy/mm/dd hh:mm:ss に変換する方法を
教えて下され!
0446デフォルトの名無しさんNGNG
>>445
そんなに追加したこと無い
0447デフォルトの名無しさんNGNG
ファー眠い・・誰かたすけて・・
初心者の質問・・

表形式のフォームでフッターに値の合計値を出しているのですが
表形式のフォームってカーソルとかで「レコードを移動」するまで
編集中状態で合計値も変わらないですよね?
カーソルを移動しなくても合計値に値を反映させたいのですが、、

>> Private Sub 値_Change()
>> Me.Recordset.Update
>> End Sub

とすると、「対応するaddNew,Editが必要」といって怒られます。。
ちなみに合計値は
コントロールソースプロパティに
>> =Sum([値])
と指定。。何が悪いんだ!?つーか根本的に間違ってる???・・・
0448デフォルトの名無しさんNGNG
>>447
こうしろ

Private Sub 値_Change()
 DoCmd.RunCommand acCmdSaveRecord
End Sub
0449デフォルトの名無しさんNGNG
>>448
できました!やったー涙出そう・・ありがとうございます
0450デフォルトの名無しさんNGNG
>>446
そうですか。そりゃそうだろうな。

要は、データシートビューのサブフォームがありまして、
そのソースになっているクエリのフィールド数・ソース・
名前が動的に変化するのに対応したいのですわいな。
0451デフォルトの名無しさんNGNG
フォームでパスワード入力画面を作りたいのですが、
パスワード文字列を隠す為に"*"にするにはどうしたらいいでしょうか?
(よくパスワード入力であるやつです)

ご存知の方、お教え願います。
0452デフォルトの名無しさんNGNG
「パスワード」か「パスワード入力コントロール」を検索キーワードに
ヘルプを引いてみそ
0453デフォルトの名無しさんNGNG
>>451
2000か2002だったら「定型入力の構文と例」の「有効な定型入力の文字」って
ところを見るのだ。(ヘルプな)その一番下
0454451NGNG
ありました^^;
お騒がせして済みません^^;
0455デフォルトの名無しさんNGNG
文字列比較についてなんですが、
ACCESS(VB?)の場合、
”AAA"="aaa"がTRUEになってしまいますよね。
これをちゃんと大文字小文字の判別を行いたいんですが・・・
(検索でいう大文字と小文字の区別)
HELPとか見てもそれらしいものがなく・・・

ご存知の方、よろしくお願いします。

0456山太郎NGNG
>455
Option Compareステートメントを調べてみよう。
0457デフォルトの名無しさんNGNG
VBAをつかって外部テーブルのインポートする方法ってある?
0458山太郎NGNG
>457
TransferDatabaseトカ...
他にも、SQL使っても出来るでよ。
0459デフォルトの名無しさんNGNG
リストボックスをウィザードで作って、データにクエリを指定すると・・・
一部値を表示しない(#Name??とかウィザード画面に出てきて、実行したら値を表示しない)ものがあります。
なんか、クエリの条件にフォームの値を指定しているとそうなるみたいなのですが・・これってどうして??どうにもなりませんか?

WinXP,AccessXPです
0460デフォルトの名無しさんNGNG
条件がおかしいか、コントロール名がおかしいかだろ。
もう一度調べてみ。
0461デフォルトの名無しさんNGNG
暇つぶしに某社のオンラインソフト(Oh!ナンチャラ)を解析してみた
D系、find系の嵐で、関数名が日本語・・・
・・・・会社のレベルが知れるぞ(ワラ
0462デフォルトの名無しさんNGNG
ウインドウの閉じるボタン[X]と、DoCmd.Closeで動きが違うのですが・・
インデックスで「重複なし」を指定したフィールドで
重複した値を指定した場合、[X]ボタンだとエラーウインドウを表示してくれるのですが
「OK」ボタンを作成し、「DoCmd.Close」を指定した場合エラーをエラーウインドウを出さず、
何事もなかったようにデータを破棄するようです。
現在ADOで重複チェックをして逃げていますが、[X]同様の動きをさせるにはどうすれば良いのでしょうか??
0463デフォルトの名無しさんNGNG
>>462
ほんとだ。
ちょいと汚いが、DoCmd.Closeの前に、
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
を入れて、エラートラップしる。
0464デフォルトの名無しさんNGNG
>>463
やってみます。ありがとうございます。
今気づいたのですが、「マクロ」の「閉じる」は「X」ボタンと同じ動きをしますね。

マクロ→VBA変換をすればどういうコードになっているのか判るんだけど
なんか、その機能が俺のパソコンにインストールされてないらしく
しかも今手元にAccessのCDがなくてインストールできないときた(>_<)

だれか、マクロの「閉じる」のVBAコード晒してぇぇぇ
0465デフォルトの名無しさんNGNG
>462、>464
ヘルプにそう書いてあるYO!
そもそも終了させる時点で足掻いてもはじまらないと思うが。
DoCmd.Closeの前でなんとかしろ。

0466デフォルトの名無しさんNGNG
Accessで色々システム作ったなぁ
0467デフォルトの名無しさんNGNG
EXCEL大好きのユーザのために、フォーム上でテーブルのデータを
変更・オートフィルタを出来るようにする方法を教えてください。
PC環境が悪いのでなるべく効率よく…。
0468デフォルトの名無しさんNGNG
>>467
Docmd.OpenTable
0469デフォルトの名無しさんNGNG
>464
 マクロの 閉じる をVBAに変換してみたら、そのまんま
Docmd.Cloce になったけど。
0470デフォルトの名無しさんNGNG
質問させてください!
Access2000使ってるんですけど、
Access2000形式のmdbがVisualBasic6.0Enterpriseで
認識してくれません…
Dataオブジェクトのdatabasebaneプロパティで指定してもハネられます。

大学のパソコンでも自宅のパソコンでも友人のパソコンでも
できなかったのでハード環境は関係ないと思われます。
あと、いずれもフルインストールの状態です。
ガイシュツかもしれませんが、お願いします。
0471デフォルトの名無しさんNGNG
Access2000または2002のデータベースに登録しているメールアドレス宛てに
Outlook Expressからメールを送信したいのですができますか?

Outlook2000、2002では実験して成功はしたのですが、
Outlook Expressから送信する情報が見当たらないので、
できるかできないかだけでも知りたいのですが・・・

>>470
ODBCデータソースとか作成した?
Accessのモジュールにも接続するための記述しなければいけなかったよね
あ〜、今思い出せないなぁ(忘れちゃったので全然違うこと言ってたらスマソ)

接続するとこまでなら
本を見て最初からやればできると思うよん
0472デフォルトの名無しさんNGNG
>>471
残念ながらOutlook ExpressはOLEオートメーションに対応していません。
ので無理です。
0473デフォルトの名無しさんNGNG
>>470
SP4以上入ってる? どうでもいいけどAccessの質問じゃないよなぁ。
http://www.asia.microsoft.com/japan/msdn/vstudio/downloads/sp/VS6FIXES.asp
0474471NGNG
>>472
あらら〜、やっぱり無理でしたか(w

ネットやってたらOutlook Express5以上を使用したメール送信ソフト
があったので、今ならできるようになったのかな、と思ったんだけどな〜(w
Access以外ならできるってことじゃないだろうし、Outlookの間違いだったんだろうか・・・

レスさんくすです^^
0475デフォルトの名無しさんNGNG
ちょいと質問。
Access97で使ってたモジュールをAccess2002でも使おうと思ってインポートしたんですが、
実行すると変数宣言の部分でエラーが出てはねられてしまうんです。

 Dim db As Database
 Dim rs As Recordset
 Dim tbldef As TableDef

はねられるのはdbとtbldefなんですが、
これってAccess2002で別な宣言に変わったりしたんでしょうか?
宣言の一覧を見るとAccessObjectとか
新しいのが追加されてるみたいだし…。

お時間ございましたら答えて頂けると嬉。
単発質問で申し訳ないんですが(´ω`
0476デフォルトの名無しさんNGNG
>>475
VBAの[ツール][参照設定]を見てみ。DAOがチェックされてないと使えないぞ。
漏れも97から2000移行した時にこれで1週間迷ったから。
(おそらくこれが原因だと思うが、ちがう?)
0477475NGNG
Microsoft DAO 3.6 Object Libraryにチェックを入れたら
難無く通りましたー

俺も今週ずっとこれで時間費やしてました…。
つか、普通わかんねぇよヽ(`Д´)ノ ウワァァン

レクチャーありが�dございます
>>476サソ
0478デフォルトの名無しさんNGNG
>471
BASP21.DLLでも使え。
0479470NGNG
>>473
レスありがとうございます!SP5とMDAC2.6日本語版で解決!
ただ、Access97のmdbならJet3.15で参照できたのですが
2000だとJet4.0でないと参照させてくれませんでした。
他のエンジン(?)はまだ試してませんが…
0480デフォルトの名無しさんNGNG
>>479 それで?
0481デフォルトの名無しさんNGNG
すんまそんー
どなたか教えて下され。

フォームに配置したテキストボックスやリストボックスの値を
変数に代入するなりして使おうと思ってるんだけど、
取得する所で毎回「そのコントロールがフォーカスを取得して無いと値を取得できん!」
みたいな感じで弾かれてしまうんです。
これってどうにかして無効化出来ないもんでしょうかね…。

毎回SetFocusして変数に代入して…なんてやってたら
日が暮れちまうよウワァァン

お時間があったらアドバイスおながいします。
0482デフォルトの名無しさんNGNG
.valueと.textの違いわかってますか?
0483デフォルトの名無しさんNGNG
>>482
これが正解だが、関数作ったことある?って聞いてみたい。
0484481NGNG
>>.valueと.textの違いわかってますか?

それはOKです。

ただ、その.valueだったり.textを取得しようとすると、
前述した「フォーカスを取得してねーぞゴルァ」となってしまうのです。
0485381NGNG
つかすいません。思いっきりボケてました(;´Д`)
てっきり.valueを指定したものだと思ってました。

改善前>>

 Dim strOmaemona As String
 Me.tbxMemberID.SetFocus
 strOmaemona = Me.tbxMemberID.Text

 Call MsgBox("あなたのメンバーコードは" & strOmaemona & "です。",vbInformation,"(´∀`)")

改善後>>

 Call MsgBox("あなたのメンバーコードは" & Me.tbxMemberID.Value & "です。",vbInformation,"(´∀`)")

つか疲れで返事があいまいになってしまって申し訳ないです。
今日はもう回線切って帰ることにします…。

くだらない質問に答えて下さってありがとうございました。鍛錬します。

>>483さん
関数は作ったことありますよ。
GUIまわりの処理はスタイルシートのように殆ど関数でやってます。
逆に言えば関数に関してはその位のレベルですД
0486481NGNG
上の名前481でしたスンマソ

;´Д`)ノ
0487デフォルトの名無しさんNGNG
変数は使ったほうがいいと思った
0488デフォルトの名無しさんNGNG
ご指導の通り、コピペしました。しかしこの板始めてだけど強烈やな。色んなhomepage参照して
色々、調べましたがいまいち画テンがいきません。なぜ遅いのか、知りたいです。

mdbをAccess2000で変換し、connection string をjet.oledb.3.51から4.0にかえて、activex
とか変えて、プログラムに結合しなおしたが処理が3.51に比べて
10倍以上かかるようになってしまった。そんなに4.0って遅いの。
ちなみに自分はAcess95をAccess2000にアップして使ってます。
ソースは以下のようですがとくに問題無いとおもうんだけど。
だれか教えてください。

Private Sub subTransCostDwn()
Dim SP(12)
filenum = FreeFile
Open gListpath & "\rxalltrncost.csv" For Input As #filenum

SQL = "delete * from TransCost "

ADO_Connection.Execute SQL, , adCmdText

Do Until EOF(filenum) = True
Input #filenum, d0, d1, d2, _
, SP(1), SP(2), SP(3), SP(4), SP(5), SP(6), SP(7), SP(8), SP(9), SP(10), SP(11), SP(12)

SQL = "select * from TransCost where dealyear = " & Format(wAcntYear)
SQL = SQL & " and transcd = '" & d2 & "' and lensnm = '" & d4 & "'"

Set rs = New ADODB.Recordset
rs.Open SQL, ADO_Connection, adOpenStatic, adLockOptimistic

If rs.RecordCount = 0 Then
rs.AddNew
rs!dealyear = d1
rs!transCd = d2

End If

For i = 1 To 12
j = i + 3
If j > 12 Then
j = j - 12
End If
rs.Fields("shpqty" & Format(j)).Value = SP(i) + rs.Fields("shpqty" & Format(j)).Value

Next
rs.Update
rs.Close
Loop


Close #filenum


End Sub
0489デフォルトの名無しさんNGNG
質問の時はあげとけ
0490デフォルトの名無しさんNGNG
>>489 あんまし、強烈なんで、これ以上、言われたくなかったから上げれんかった。
色々調べてるけど、よかったら教えて。
0491デフォルトの名無しさんNGNG
>>488
>Set rs = New ADODB.Recordset
とりあえず、これをDo Loopの前においてみないか?
1回ループするごとにNewするのは明らかに効率悪すぎ。
で、ループ終わったらちゃんとSet rs = Nothing もしておけよ。
0492デフォルトの名無しさんNGNG
488ですがプログラムロジックも色々変更してテストしましたが
そんなに関係はないようです。
ゆっくり寝てから、色々実験したらAccess95で作ったmdbをACCESS2000で
変換すると処理が遅くなることを見つけました。完全に同じ物には
やはりならないようだ。ほっとした。休養は大事だね、
0493山太郎NGNG
昔バージョンはDAO使ってたって事は無いのかのぅ?
0494デフォルトの名無しさんNGNG
>>488
うーん、あとは変数の宣言(型も)を明示的にやってるか、くらいだよな。
でもあんまり変わらないかも。
0495デフォルトの名無しさんNGNG
488ですが、やはりwin98でjet.oledb.4.0を使うと遅いという結論に
達しました。型宣言とかいろいろいじってみましたがあんまりかわりません。
レコードの項目数が多いほどおそくなります。
理由はわかりません。access97で3.51を使うことにしました。
oledbの早いのが見つかったら、移行することにしました。
ただ、今まで問題視した人もいただろうし。自分だけじゃないようなきもするし。
0496デフォルトの名無しさんNGNG
ADOよりDAOの方が速いぜって話もあるんだが・・・
0497デフォルトの名無しさんNGNG
>>496
実際どうなん?
0498デフォルトの名無しさんNGNG
>497
前にVBマガジンで検証やってたが、そのときは
DAOのほうが速かったはず。
0499 NGNG
ADOのがエレガントなコードが書ける(漏れは)
速さはしらん。
0500デフォルトの名無しさんNGNG
DAO=速いけど汎用性なし
ADO=遅いけど汎用性あり のトレードオフだと思ふ
0501デフォルトの名無しさんNGNG
で、MSは汎用性を重視しちゃったと。
速いのがよければSQL Server(しかしひどいネーミングだね)使えと。
しょせんアクセスはフロントエンドだから、速さはいらんと。
0502デフォルトの名無しさんNGNG
>488
実際に速度測ってみたけど、ADO、DAO云々よか、
491 の指摘通り、New をLoopから外したら劇的に早くなったんだけど。

 MSDEもある今、AccessだけでDBアプリ組むことに利点は感じられないし、
ADOXでごまかしながら、DAOのオブジェクト郡をカバーできると思うんで、
DAOにこだわる必要はないのでは?
 Accessのみなら、断然DAOに決まってるけどね。使いやすい。他にも
RDOやらODBCDirectやら、オブジェクトがたくさんあって混乱するやつは
以下のリンクが参考にはなると思う。

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9904/msdb
0503デフォルトの名無しさんNGNG
まあ、DAOで組んだやつをADOに置き換えるのも
たいした手間じゃないし、どっちでもいいような
気がするけどね。上位ラッパー作っちゃってもいいし。
0504デフォルトの名無しさんNGNG
むしろJet-DBEを闇に葬り去ってほしいのだが。
初めからデータの格納はMSDE、データの加工(?)は
Access(Form & Report)でやるほうが、のちのち
恩恵があると思うがどうよ?
0505デフォルトの名無しさんNGNG
DAOはもうマックロソフトもサポート打ち切って、
将来がないからねえ。。。
0506デフォルトの名無しさんNGNG
お世話になっております。488です。
adodb.recordsetをnewするのを Do Loop の前にもってくるのも
やってみましたが、自分の環境では処理速度はあまりかわりませんでした。
googleで検索しましたら、以下のページをみつけました。

http://homepage1.nifty.com/tsware/labo/labo_22.htm

やはり、oledb.4.0はoledb.3.51に比べて遅いみたいです。この速度では
自分のプログラムは稼動できません。なにか、代替方法を考えるか
oracleかなにかを使うしかなさそうです。しばらく、今のプログラムを
いじらずに3.51のままにしたほうが良いみたいです。
しかし、microsoft、一体全体・・・・・ あとは言いたくないです。
0507デフォルトの名無しさんNGNG
木構造データってどう扱っています?
今二分木構造のデータを扱っているのですが、

(親ID、子ID、左右種別)

を組にして内部に持とうとしています。いろいろ
探してもあまり参考になるものがみあたらない
のですが、こういうのに定石ってありますか?

#RDBMSなんて使うなっていう話もあるが。

上記のような形でデータを持っているとすると、
それをACCESSのVBAでツリービューとして表
示することもできるのでしょうか?

#Grape cityなんかのツールを使えばよさげ
#なのですが、標準では無理?
0508デフォルトの名無しさんNGNG
MS TreeView(ocx)をフォームに貼ったら簡単できると思うけど・・・
Accessデータを2分木表現するのも、Treeに大量のデータ表示するのも激しく
自然の理に反してる気がするんですが。
万が一やるならMS TreeViewは再配布可能だが配付条件知らんので調べてください。
0509デフォルトの名無しさんNGNG
>>508
ありがとうございます。

私もACCESSでこの手のデータを取り扱う
のも、ましてや視覚表現するのもあまり気は
進みまないのですが、お客様のご要望(^^;
なので、検討だけはしているところです。

#木構造の表示はとりあえず勘弁してとは
#言ってありますが……。
0510デフォルトの名無しさんNGNG
>>509
Win32API呼び出して、自力描画してやれば?
0511デフォルトの名無しさんNGNG
>>510
めいっぱい値切られているので、
手のほうもめいっぱい抜きたい
というのが本音(^^;
0512488NGNG
microsoftの英語版homepageからJet40SP6_9xNT.exeをダウンロード
し実行したところ、処理速度は改善され、3.51と同じか、ほんのちょっと早いくらいに
なりました。これで過去の資源は使えそうです。
0513デフォルトの名無しさんNGNG
>>512
いいこと聞いた
0514デフォルトの名無しさんNGNG
>512
それらしきものは見つけたけど、ダウンロードしようとすると
Sorry, there is no Microsoft.com web page matching your request.
と言われてしまった。
どこから落としてのか教えてキボンヌ
0515デフォルトの名無しさんNGNG
http://support.microsoft.com/default.aspx?scid=kb;JA;q239114
IEで(5.0sp2)素直に落ちるが
0516デフォルトの名無しさんNGNG
>515
サンクス
でも俺Win2Kなんだけど、Jet40SP6_W2K.exe を
入れようとすると言語が違うってはねられちゃうのな・・・
鬱
0517デフォルトの名無しさんNGNG
Access 97でADO使ってるのですが、Access 97じゃあ CurrentProject
オブジェクトを作ってくれないから、カレントデータベースに接続でき
ません。
Access 97 + ADOでカレントデータベースを参照する方法ないですか?
0518デフォルトの名無しさんNGNG
結局、DAOのCurrentDB関数で名前を取得して、ADOで接続することにしました。
あんましスマートじゃないけどしかたない。
0519デフォルトの名無しさんNGNG
97 & ADO でがんばる理由って、どんなの?
煽りじゃなくて、俺もよくわかんないから聞いてみたい。

しかしAccessって、フォームのRecordSourceにDAOとかADOのRecordSet渡せたら
非常に使い勝手がいいと思うんだけど、最近のはできるのかな?
俺は97以上に上げさせてもらえないんでわからん。
コレできるんだったら、なんとしても全社バージョンアップさせたいのだが。
0520デフォルトの名無しさんNGNG
メッセージボックスについて質問です
if msgbox("いいですか?",vbyesno)=no then
 …
 … 
end if

このような場合、
Msgboxが開いた時はNoの方にフォーカスがくるようにしたいのですが
方法ってありますか?

0521デフォルトの名無しさんNGNG
>>520
ヘルプ読め。載ってるから。
0522デフォルトの名無しさんNGNG
>>520
vbDefaultButton[n](nは1〜4)との併せ技じゃないの?
0523デフォルトの名無しさんNGNG
どちらか
�@(推薦)質問のロジックを逆にする。
→常にYesをデフォルトとするほうが選択ミスをしない
�Aフォームでメッセージボックスを自作する。
0524デフォルトの名無しさんNGNG
MsgBox "hoge", vbYesNo + vbDefaultButton2
0525デフォルトの名無しさんNGNG
if msgbox("だめですか?",vbyesno)=vbYes then
 …
 … 
end if
にすれば標準「はい」でもOK
0526デフォルトの名無しさんNGNG
業務アプリ組むときは、必ず「いいえ」をデフォにしてる。
メッセージボックスに、どれだけ注意事項書こうが読まれやしないし。
0527デフォルトの名無しさんNGNG
ACCESS2000でヘルプが表示されないっす
サポート技術情報見たらヘルプ立ち上げてからって書いてあったんですが
やはり駄目です。例えばADODB.RecordsetのRecordsetにカーソル合わせて
F1押してもRecordsetの説明が出てこないのです(なき
0528SupportDESK ★NGNG
Test
0529雲珍NGNG
Access2000のMDBサイズについて教えてください。

Access2000をDB扱いしてVB画面から色々いじってます。
処理としては、「ファイルを読んでテーブルを作成して、
いろんな処理をしたら、テーブルを削除してまたファイルを読んで」を繰り返します。
ファイル数450に対して、この作業を繰り返すとMDBのサイズが1.2Gを超えました。
本番環境ではファイル数1200程度なので、ファイルサイズがもっと大きくなると思います。

さて、MDBのサイズが2G程度になった場合の弊害はあるんでしょうか。
0530仕様書無しさんNGNG
>この作業を繰り返すとMDBのサイズが1.2Gを超えました。
>MDBのサイズが2G程度になった場合の弊害はあるんでしょうか。
貴方が他のプロから笑われること
0531デフォルトの名無しさんNGNG
>529
まともな設計者からキティ扱いされることが一番の弊害だと思います。

マジレスすると、オブジェクトの削除を繰り返すのはかなりMDBが肥大化する
ので止めたほうがいい。

また、Access2000のレコードロックを外さないとMDBがやたらと肥大化する。

そもそも2G以上はAccessの定義に引っかかるから作成できない。
0532デフォルトの名無しさんNGNG
>>529
>>530-531さんに同意。
>テーブルを削除してまたファイルを読んで」を繰り返します。
どうもこの文面を読むと、同じレイアウトのような気がするな。
普通は区分フィールドなり設けておいて、レコードの削除後、
「インポート」→「区分フィールド書き換え」をくりかえし、一括処理するもんだが・・・。
ケースによっては、「終了時に最適化」の設定をしておいて、一括処理後に
全てのレコードを削除して、終了する手もあるが。

今の流れでは、全体の処理時間もかかってるんじゃないか?
0533雲珍NGNG
レスどうもです。
>>531
テーブル自体削除ではなく、インポートしたレコード全削除です。
それでも、肥大化することには変わりないのですが。

>>532
区分フィールドとはどういった意味を持つフィールドでしょうか。
時間的には、恐らく4時間半程度かかると思われます。
が、現行(汎用機上)では丸二日かかる処理です。
ある程度ファイルをインポートしたら、途中で最適化を行うようにしようと思ったのですが、
db.closeしても、CompactDatabaseが実行できませんでした。
最適化を行うにはDBが閉じていることが条件ですが、
db.closeではまずいのでしょうか。

0534デフォルトの名無しさんNGNG
結局何がやりたいのか、それをふまえた上で設計しなおすのが一番。
無理を通せば道理が引っ込む、なんて方法で作られたソフトなんてろくなもんじゃない。
0535532NGNG
>>533
つーか、もう少し概要を詳しく書け!

1200の外部ファイルは、レコード数はどれくらいになるのかとか、
>>529でいってる「いろんな処理」はどのような処理なのかとか、外部ファイル毎に処理内容が違うのかどうかとか。
2chでも書けることはいっぱいあるだろう。

最適化にも何通りかやり方があるが、いまのままでは、>>534さんのようなレスしかできない。
0536デフォルトの名無しさんNGNG
>>529

俺も似たようなことやってるなー

ローカルにTEMP(WORK)テーブルを作って、作業するレコードをそこにインサート。
レポートとかテーブルはこのtempテーブルをレコードソースとしてみてます。
処理が終わったらDELETE * from [TEMPテーブル名] を発行。
まぁ、これでも肥大化はしてくので、適度に最適化はやってます。

まぁ、参考までに聞いてね。
これも間違ってるかもだし。
間違ってたら訂正キボンヌです。
0537雲珍NGNG
>>532
大変失礼しました。
外部ファイルのそれぞれのレコード数はバラバラです。
確認できたものだけですと、最小で200、最大で45000件でした。
もっとレコード数の多いファイルもあると思います。
やりたいことの概要としては、
「全ファイルの中から条件にあうレコードの件数を集計する」
というものです。
(条件にあるがどうか調べるために、いろいろなテーブルを読みに行く必要がありますが。)
ファイルのフォーマットは同一です。

>>536
私の仕事が、今まさにそれです。
最終的には集計した結果を帳票出力します。
0538○NGNG
載させていただきます
http://www.h4.dion.ne.jp/~k.seed/index.html
0539デフォルトの名無しさんNGNG
>537
ちょっと待て、雲珍!
あなたのやりたいことって、本当にインポートが必要なのか?
テーブル見に行って、条件みて、件数カウントするだけなら、

SELECT Count(*) 〜 WHERE 〜

で集計とれるんじゃないの?
SQLはわかる?
0540雲珍NGNG
>>539
SQLはわかります。
件数をカウントする対象は、ファイルにあるレコードです。
ですので、全ファイルをインポートしてテーブルを作成する必要があると思ってます。

0541デフォルトの名無しさんNGNG
>>540
UNIONは?と言ってみる
0542デフォルトの名無しさんNGNG
>540
いや、ファイルにあるレコードって、何?
CSVとかそういうの?
テキストでおいてんの?
MDBではない形式なのね?
0543デフォルトの名無しさんNGNG
ファイルがCSVならリンクにすればいいだろうし、それが出来ないようならMDBにインポートする事自体辞めたほうがいい。
MSDEなら改善されるかな?
0544532NGNG
>>537
詳しい説明ありがとう。

何で読み込むだけ読み込んでおいて、一括で処理しないのかと思ってたんだが、
ひょっとして1200個すべて読み込むだけで2GB超えちゃうのかな?
レコードの削除も使用領域を開放しないだけで、増えちゃうわけではないだろうし。

となると、Accessに取り込まずに処理することだ。
CSVなら、>>543が言ってるようにリンクさせるかInputステートメントだな。
汎用機のことがちょっと出てたので、固定長の区切文字のないファイルなら
Line Inputで変数にでも取り込んでLeftなり、Midなりで処理しろ。

どちらもヘルプに簡潔なサンプルが載ってるから、一度見てみれ。

それじゃ、頑張れ!!
0545雲珍NGNG
ファイルのレコードは固定長です。
なので、532さんのおっしゃるように
インポートせずに一行ずつ読んで処理するという方法も考えたのですが、
テーブル化した方がSQLで速く楽に集計できると思って安易にインポートを選択しました。

私としては途中で最適化を行うようにしたいのですが、
以前に書いたとおりうまくできませんでした。

■ このスレッドは過去ログ倉庫に格納されています