Access使い集合!
■ このスレッドは過去ログ倉庫に格納されています
0001名無しきぼう
NGNGAccess or VB で yyyy/mm/dd hh:mm:ss に変換する方法を
教えて下され!
0554デフォルトの名無しさん
NGNGそりゃCSVのデータ形式から考えればDBに比べて重いのは当然だろう。
0555へたれ
NGNGサブフォーム(帳票形式)のテキストコントロールのプロパティを
標準モジュールからいじりたいのですが。
sub test()
Forms![親フォーム].[subエリア].[入力数値].DecimalPlaces = 3 ’小数点以下3桁表示
end sub
実行時エラー438
オブジェクトはこのプロパティまたはメソッドをサポートしていません。
となります。
小2時間ほど悩んでます。
サブフォームのコントロールのプロパティを変更するにはどうすればよいのでしょうか?
0556だー
NGNGじゃなくて
Forms![親フォーム]![subエリア]![入力数値].DecimalPlaces = 3
じゃねえか〜
0557へたれ
NGNGできました。感謝感激です。
0558デフォルトの名無しさん
NGNG処理内容にもよるが、直接読んだ方が速いで。
0559デフォルトの名無しさん
NGNGいくらやってもNULLになってしまいます。
半角スペースって登録することできないのでしょうか?
まぁ、別の方法考えればいいのですが、
気持ち悪いので質問させていただきました。
0560デフォルトの名無しさん
NGNGテーブルの項目ってフィールド名か?フィールド名を半角スペースで
済ませたいってこと?
それとも、テーブルに直接データ打ちこむと消えてしまうってこと?
テーブル直打ちで半角スペースは打ちこめないよ。クエリか関数はさめばOK
0561デフォルトの名無しさん
NGNGデータですね。
CSVをインポートするときに
「, ,」のデータを読み込ませたらNULLになってしまったので。
関数かクエリー使えばいいんですね。
ありがとうございます。
0562not 560
NGNG>>560
話がかみ合ってないような。
フィールド名を空白にしたい→クエリ使えば?
CSVの空白データを読み込みたい→," ",としたら?
という2つがすれ違っているような。違う?
0563デフォルトの名無しさん
NGNGCSVの' 'を読み込んで、データを空白にしたい、ってことです。
フィールド名は関係ありません^^;
混乱させたみたいで申し訳ないです。
0564デフォルトの名無しさん
NGNG自己レス訂正
' ' → , ,
ですね
0565デフォルトの名無しさん
NGNG何故にそうしたいのか晒した方がいいのでは…
0566563
NGNGお客さんから更新データが毎回CSVで来て、それをこちらの
一時テーブル(CSVをそのまま反映するので、本来は日付型やYES/NO型でもすべてテキスト型にしてあります)にセットし、
さらにその一時テーブルをマスタのテーブルにUPDATEするシステムなんですが、
その時に「更新しない項目」の扱いについて検討中なんです。
その時、
,,が一時テーブル入るとNULL → 更新しない。
,文字列,がテーブルに入る → その値で更新
となるんですが、
じゃあ消去したい時はどうすればいいか?って話の時に、
消去したい項目にはスペースを入れるのはどうか?という話になったんです。
ですが、上でも書いたとおり、「, ,」を一時テーブルにインポートするとNULLになってしまうので・・・
ひょとしたらこの仕様時点で大きな過ちを犯してるかもしれないので、
ついでにアドバイスなぞいただけたらありがたいです。
一応現段階としては、スペースは止めて、消去したい項目には、「del」みたいな実データにはありえない文字列をセットして
転送してくれという話になりつつありますが・・・
0567デフォルトの名無しさん
NGNG> 消去したい項目にはスペースを入れるのはどうか?
これはAccessのテーブル(一時テーブル)にデータが入っているのであれば
当該フィールドが「Is Null」のデータを削除クエリーで消去すればいいのでは…?
CSVをインポート→一時テーブル→削除クエリー
または
CSVファイルをリンク→削除クエリー
0568デフォルトの名無しさん
NGNG更新クエリを使ってやることができますか?
さっきからやってるんだけどいかんせんうまくいかない・・・
コードにSQLで書いたほうが早いかな?
0569デフォルトの名無しさん
NGNGISNULL=TRUEのデータは更新しない項目、つまりマスタの値をそのまま保持するんです。
というか・・・普通更新のシステムってこんなことするんですかね・・・
別所で更新データを生成して、それとは別のシステムに転送して更新させるみたいな。
普通は更新は対象項目をオーバーライトするものだとばかり思っていたんですが・・
0570デフォルトの名無しさん
NGNGクエリーのテーブル表示に「あるテーブルの値」と「別のテーブル」を表示して
できるけど「あるテーブルの値」が複数ある場合は最後のデータが反映されるようだ
事前に「あるテーブルの値」をクエリーで絞り込んでおくこと…かな?
0572デフォルトの名無しさん
NGNGおお、なるほど。
そうすればとりあえずは全角スペースならデータとして埋め込んでくれますね。
ありがとうございます。
0573デフォルトの名無しさん
NGNG空文字をセットしたい時には、
= NULL とやるか、 = ""
とやるか、どっちがいいんでしょうか?
0574デフォルトの名無しさん
NGNGヘルプよりコピー
******
Empty 値は、初期化されていない (初期値が代入されていない) バリアント型の変数を示します。
Empty 値を含むバリアント型の変数は、数値データと共に使われるときは 0、文字列データと共に
使われるときは長さ 0 の文字列 ("") として扱われます。
Empty 値を Null 値と混同しないでください。Null 値は、バリアント型変数に有効なデータが意図
的に格納されていないことを示します。
******
クエリーで抽出条件を「""」や「Null」ばわかると思うが?
0575デフォルトの名無しさん
NGNG一括して全部エクスポートで良いんだけど。
0576デフォルトの名無しさん
NGNGOfficeLinkが手っ取り早い
マクロにもその手のものがあると思うけど…
0578デフォルトの名無しさん
NGNG0579VBA厨房
NGNG他形式のファイルにエクスポートする時に、Docmdオブジ
ェクトのTransferSpreadsheet,TransferTextメソッド
を使うと保存先ファイル名をフルパスで指定してエクス
ポートする方法しか知らないのですが、
www.interq.or.jp/hot/tsatoh/tryaddress/tryaddress27.htm
のように、ダイアログを表示させて保存させるには
どうしたらいいのでしょうか?
ちなみに上のサイトの方法でやろうとしてもMicrosoft Common
Dialog Contrlが無いのでできないんです。
助けて・・・
0580デフォルトの名無しさん
NGNGなんかよくわからんけどAPIでGetOpenFileNameA呼べば?
0581デフォルトの名無しさん
NGNGいっとくけど動作保証しないよ。
Public Sub AllTableToExcel()
Dim TD As TableDef
For Each TD In CurrentDb.TableDefs
If TD.Attributes = 0 Then
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, TD.Name, "c:\" & TD.Name & ".xls"
End If
Next
MsgBox "------------糸冬 了------------"
End Sub
c:\に沢山できてるでしょ?ダメ?
>579
API公開してるサイトがあるから探してこい。
0582VBA厨房
NGNGとりあえずコモンダイアログ使わないで
作れました。疲れた・・・
2ch万歳
0583Z80A相当
NGNG今開いてる自分自身のmdbファイルのパスを取得したいんですけど可能でしょうか。
リンクに相対アドレスをつかいたいもので。
解る方いらっしゃいましたらお願いします。
0584デフォルトの名無しさん
NGNGPrivate Sub コマンド1_Click()
MsgBox "このファイルのパスは " & CurrentProject.Path & "です。", vbInformation + vbOKOnly, "パス参照"
End Sub
とか?
0585デフォルトの名無しさん
NGNGここ ttp://www.ruriplus.com/msaccess/index.asp の
ttp://www.ruriplus.com/msaccess/faq/faq_008.html より
************************************************************
次のユーザー定義関数を作成します。
【7.0, 97】
Function GetCurrMDBDir() As String
Dim db As DATABASE
Dim FullPath As String
Dim ilop As Integer
Set db = CurrentDB()
FullPath = db.Name
For ilop = Len(FullPath) To 1 Step -1
If Mid(FullPath, ilop, 1) = "\" Then Exit For
Next
GetCurrMDBDir = Left(FullPath, ilop)
End Function
【2000 以降】
Function GetCurrMDBDir() As String
Dim db As DATABASE
Set db = CurrentDB()
GetCurrMDBDir = Left(db.Name, Len(db.Name) - Len(CurrentProject.Name))
End Function
**************************************************************
0586Z80A相当
NGNG的確&素早く答えていただいて全くもって助かりました。
ありがとうございました。
0587デフォルトの名無しさん
NGNG会社にWEBサーバーあるんで、そこに置きたい
0588デフォルトの名無しさん
NGNGイントラネットでなら、できると思われる。
ただ、.netは知らないですわ。2000までの話。
0589デフォルトの名無しさん
NGNGInterDev経由でならやったことある。
0590しろ
NGNGWindowsXP上でAccess97で作ったDBをAccess2002に変換したところ、
関数の戻り値がおかしくなりました。
ヘルプで検索しても関数ちっとも出てこないし・・・(-_-;)
2000より更にヘルプ使いにくくなりましたね。。
Microsoftに電話したところ、下記のように言われました。
Switch関数、Choose関数の戻り値は、Access2000以降のものを
OSのWindows2000以降のもので使用すると数値で返ってくるはずの
値が全てテキスト型になってしまいます。
Access97ではこの現象はないそうです。
また、Access2000以降でもWindows98等で使用する場合には
正しい型
で返ってくるそうです。
Access2000からの障害ですが未だに治ってないそうです。。。
また、この問題については、Microsoftの英語のサイトにしか記載が
ないそうなので、ご参考までにご報告します。
・・・きっー!!使えないよー(>_<)
0591デフォルトの名無しさん
NGNGだが勉強にナターヨ。
0592デフォルトの名無しさん
NGNGOffice97,Office2000またはAccess97,Access2000を混在させたらやはり不具合がでますかね・・・。
Access2002ランタイム単一でいれることにこしたことないのですが
旧バージョンのOffice、Accessと混在させているという経験者がいらっしゃいましたらアドバイスきぼんぬ
0593デフォルトの名無しさん
NGNGおれも使った記憶がないが、有益な情報ありがとう。
0594デフォルトの名無しさん
NGNGそんな関数使うやついないだろ(ワラ
0595しろ
NGNGえ?そうですか?使わない?クエリで条件分岐するような関数は
どうしてますか?そういう事ってやらないですか?
モジュールでは確かに使わないけど・・・。
>592
試験的にやった事はあります。
実行させるショートカットに
"パス名 /runtime"
と指定したもので実行させるようにする必要がありますが、
OfficeはともかくAccessが入ってると、動作は微妙に怪しくなるかも
しれないです。
あまり答えになってなくてすみません。
0596デフォルトの名無しさん
NGNG漏れは、if、Select使った関数自作している。
IIF、swich、Chooseなんて関数、コードの中でも、
どうしても使わざるをえない場合以外使わん。
根本的にキライだからな(ワラ
0597595じゃないけど、、
NGNGスマソ。。
0598しろ
NGNG私も何度も出てくる関数の時は自作はします。
同じくSwitchやChooseは、コードの中では使った事はないなー。
クエリ内で使うのみです。
>597
>590で書いた問題は、IIFでは発生しないそうです。
検証はしてませんが。クエリ内では私も同じく使いまくってます。
要注意です。
・・・謝る事は無いと思うが?
0599596
NGNG遅い等も大きな理由だが、最大の理由は
「コードがエレガントではなくなる」
からだ(ワラ
0600デフォルトの名無しさん
NGNGAccessごときにエレガントを求めても・・・
0601592
NGNGレスありがとうございます。
やはりAccessは共存させないほうがいいみたいですね。
Officeは未だに97使ってる人もいるので心配だったのですが、
この分は気にしなくていいようなので少しホッとしました。
0602デフォルトの名無しさん
NGNG> ちなみにD系関数などもつかわん
同意。もちろん、使うべきときは使うが。
なんかあったらすぐD系関数つかうやつが多すぎないか?
どういう動作をしているか理解しているのだろうか?
select文でDLookupなんかつかうな。
0603デフォルトの名無しさん
NGNG>600
Accessなんぞ趣味で使うアフォは少ないだろうし、
コードの見栄えを優先してD系使わないってのは
いかがなもんか。
まぁ、>602 の指摘通り、SELECT投げながらDlookUp使う
バカも多いのは確かなんだけどね。
2000程度のテーブルなんか見に行くときはそんなに速度差も
出ないし、ラクでいいと思うが。
0604デフォルトの名無しさん
NGNGいたずらされてしまって困ってしまいました。
教えてください。
よろしくお願いいたしますm(_ _)m。
0605デフォルトの名無しさん
NGNGない。諦めれ。
0606デフォルトの名無しさん
NGNGどんなにがんばっても、「メニューバー」残ってしまいます。
システム上でフィルタ機能を使っていると、
このメニューバーでフィルタを解除することができてしまうので、消したいのですが・・・
何か方法はないでしょうか?
ちなみにメニューバーってのは、「ファイル」とか「ウィンドウ」とか「ヘルプ」が
あるバーです。
#一応ヘルプも探したんですけど・・それらしい項目はなかったです。探し方が悪かったかな?
0607しろ
NGNG新規作成で、適当な名前を付けた「メニューバー」を作る
(ツールバーじゃありません)
中味は空っぽでOK!
2.ツール→起動時の設定で、起動時に使用するメニューバーを
1で作成したものに変更
3.Accessを再起動させた時に、1で作成したメニューバーの小さい奴
がでてくるので、×で閉じてしまいます。
次回起動する時はメニューバーはないはず。
メニューバーを表示させたいときは、Shiftを押しながら起動!
これでどう?
0608デフォルトの名無しさん
NGNGあるよ。どこで見たっけなぁ^^;;
参考にならん発言でスマソ
0609デフォルトの名無しさん
NGNG実際に印刷したら、長い文が改行されたり、2ページにまたがったりする。
何故でしょうか?
0610デフォルトの名無しさん
NGNG97でこれやるとALT押したときえらいことになったけど
0611デフォルトの名無しさん
NGNGビジネスソフト板のAccess総合相談所スレで自分が答えた
ことがある。まずはぐぐってみれ。
パス解析するフリーソフトがあるから。
0612デフォルトの名無しさん
NGNGできました!ありがとうございます!
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNGプリンタドライバ最新にしる!
0615デフォルトの名無しさん
NGNGプリンタをドライバで最新にしる!
0616help
NGNGAccessを起動したときにいきなり予め作成されているクエリのデザイン画面を起動したいですがAccess・VBAでクエリをデザイン画面で開くことはできますか?
0617デフォルトの名無しさん
NGNG0618help
NGNGありがとうございます。
DoCmdオブジェクトを使用すれば、大概のアクセス昨日をVBAで実行できるんですね。
参考になりました。
0619mai
NGNG自オブジェクトのクエリ名の一覧を表示したいのですが。
可能ですか?
可能の場合その方法または参考URLを教えていただきたいのですが
よろしくお願いします。
0620デフォルトの名無しさん
NGNGCurrentdb.QueryDefsをFor〜Eachあたりで回して.Nameプロパティを参照。
あとはリストボックスのRowSourceに区切りを追加したテキストとしてつっこめばok。
ある程度数が増えると入りきらないんで、そんときはなんとかしたほうがいい。
0621デフォルトの名無しさん
NGNG620 のついでに言うとRowSource には制限があり、2024Kbyte。
文字列として処理をされるから、クエリオブジェクトが恐ろしく
膨大にあるのであれば、パンクを防ぐために、一工夫が必要になるね。
# まー、そこまで増える場合は設計見直すのが先決だな
0622デフォルトの名無しさん
NGNGつーか、クエリオブジェクトの一覧表示して、何がしたいかでこの先が決まってくると思う。
0623mai
NGNGありがとうございます。
リストボックスより実行するクエリを指定してもらい
選択したクエリの実行結果を別フォームのサブフォームとして表示するように
したかったのですが。
2024kbまでいかないとおもいますので、検討してみます。
0624621
NGNGごめん、すげー鬱氏。
>2024kbまでいかないとおもいますので
2024Kbyteってありえんわな、2kの間違い。
鬱氏ついでに、カンタンなアドバイス。
If Lenb(Strconv(〜.RowSource,vbFromunicode))<2024 Then
こんな具合でちゃんとエラートラップしとけ。
0625mai
NGNGありがとうございます。
やはり無理っぽいですね。
クエリとAceessエクスポート機能をじかに使ってもらうかたちで逃げようと思います
0626デフォルトの名無しさん
NGNG適当なローカルテーブルにクエリ一覧を出力すればいいんでねーの?
0627mai
NGNGエクスポートボタン(コントロール)をおすと特定のファイルにエクセル形式で検索結果と別シートにクエリ条件エクスポートするようにしたかったのですが…
私の知識では、ちょっと思いつかないので。
0628しろ
NGNGDAOは出来ますか?
コンテナオブジェクトを使って、クエリ名をDAOでテーブルに
書き出せばできますよ。
そのテーブルをリストボックス等に使えばいいです。
Containerオブジェクトのサンプル
--------------------------------------
'テーブル、クエリ名を順番にメッセージボックス表示します。
Dim Db As Database, ContMy As Container
Dim MyDoc As Document, strName As String
Set Db = CurrentDb()
Set ContMy = Db.Containers("Tables")
For Each MyDoc In ContMy.Documents
strName = MyDoc.Container 'オブジェクトタイプ
strName = strName & " " & MyDoc.Name 'オブジェクト名
If MyDoc.Name Like "*MSys*" Then
Else
MsgBox strName
End If
Next MyDoc
Set ContMy = Nothing
Set Db = Nothing
-------------------------------------
※テストする場合は、スペースが入ってるので消してください。
0629mai
NGNGありがとうございます。
これにリストボックスに追加ロジックを埋め込めば想像通りの処理が出来そうです。
大変感謝しております。私の実力不足ですね。
DAO関連を学習するURL等おしえていただければ幸です。
よろしくおねがいします。
0630デフォルトの名無しさん
NGNGクエリ内での同一レコードの合計や平均の算出、
cLngなどを使った型変換、IIFでの判定、
等、本来コードでもできることってありますよね。
こういうのってクエリでやってもいいものなんでしょうか?
(結果はちゃんと出ています。パフォーマンスとか、テクニック上の問題で)
合計や平均なんかはいいけど、型変換はあまりよろしくない。等、
皆さんの意見を聞かせてください。
0631デフォルトの名無しさん
NGNGクエリ内でやるほうが普通はパフォーマンスはいいでしょ。
クエリにもよると思いますが
0632デフォルトの名無しさん
NGNG動いているならヨシだ!
パフォに関していえば、キャストが頻繁にあったりすると多少落ちる。
更に、IIFやSwitchなんか酷使してると最悪。あとで見直すときとか、
他人が見たときは悲惨、見たくもなくなる。
IIF使わないといけないってクエリは大体設計がおかしい、経験上。
0633デフォルトの名無しさん
NGNGIIFを多重に使われたりすると保守で死にそう。
ユーザ定義関数をうまく使ってくれたほうがマシ。
0634630
NGNGIIFに冠しては自分もいい噂聞かなかったのですが、
クエリでの計算フィールドで、既存の項目のNULLによって●を出力する、
ということを急にしなければならなかったので、結局IIFを使いました。
(自分では、IIFってのはEXCELでのIF関数みたいなものだと思っている)
まぁIIF使ったのはこんだけです。
とりあえず今回はこのまま進めちゃいます。
社内システムだし(笑
引き続き意見があったらお願いします。
0635デフォルトの名無しさん
NGNG使った方が早いと思ったら使えばいいし。
そもそもAccessを使う、っていう選択自体が工数削減を目的としたものだろうし。
0636デフォルトの名無しさん
NGNGそれくらいの用途なら使っても問題無しだ。
0637yuki
NGNGのシステム開発をおこなうのですが、
oo4o関連の参考図書として、情報量が豊富なものと初心者向けのものメジャーなものを教えていただきたいのですが。
よろしくお願いします。
0638デフォルトの名無しさん
NGNGメインテーブル:id(オートナンバー型)、管理番号、PC名、その他フィールド
ソフトウェアのライセンステーブル:ソフトウェアの名前,id(長整数型)
という構成でフォーム(ソースはメインテーブル、サブフォームに
メインテーブルのidに対応したソフトウェアの表示)からDAOを使って
データベース操作をする時、一つ前の更新情報を履歴としてメインの
テーブルに残すために
管理番号はそのままでidだけ変更してメインのテーブルにレコードを
追加したいのですが、idがオートナンバーなので、それに対応した
サブフォームの表示ができないんです。
助けて…
0639デフォルトの名無しさん
NGNGオートナンバーなんかやめればいいじゃん
0640VBA厨房
NGNGこれ?
http://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fjp404%2F9%2F11%2Easp&LN=JA
0641mai
NGNGありがとうございます
この方法は一度検討したのですが、
Access2000の場合、書式を設定しないと文字化けしてしまうし、
特定セルに出力できないためあきらめました。
0642しろ
NGNGエクスポートは文字化けしたりする事は多いですし、
シートを選んでエクスポートしたり、特定のセルを選んだりしたいなら、
AccessからExcelのVBAを操作して指定してやる必要があります。
>628
DAOについてですが、簡単に検索してみましたが初級用のサイトで
よさそうなのは中々見つけられませんでした。
ちなみに私の場合、DAOはA4サイズの薄っぺらい「AccessVBA上級」?とか
「Access応用」?とかそんな名前の本で勉強しました。
今手元に無いので出版社とか判らないのですが、PC関係の本が多めに
置いてある書店の端っこの方に置いてあると思います。
(といってもこの本がオススメと言うわけではないですが・・・(^_^;))
ご参考まで。
0643デフォルトの名無しさん
NGNGコード部分で”何も入っていない”と判断する式はこれだとまずいのでしょうか?
どうもうまくいかなくて困っています。
If Me![*****] = Null Then
line1.Visible = False
txt1.Visible = False
End If
プロシージャはFormat部分にコードを書いてます。
0644デフォルトの名無しさん
NGNGNullは値と思いがちなんだが、Accessが評価してない値の「状態」だ。
比較するには値が確定してないと結論が出せないのはわかるだろ。
だから、Nullであることを確認したいときにはIs系関数を使ってみれ。
If IsNull(Me![*****]) Then
・・・・・
0645デフォルトの名無しさん
NGNGnullは値ではなく状態なのですね・・・。
だからイコールで結ぶのではなくIsNullで値を確定する、と・・・なるほど
ありがとうございます!感謝!!
0646デフォルトの名無しさん
NGNGオレはいつも
If Isnull(Me.小林) or Me.小林="" Then
ってかたちで判定してる。
0647デフォルトの名無しさん
NGNGじゃダメか。
0648しろ
NGNGIf Isnull(Me.小林) or Me.小林="" Then
とやってますが、最近は
If Isnull(Me.小林) or Len(Me.小林)=0 Then
にしてます。
Me.小林=""
と言う文字列の判定より
Len(Me.小林)=0
の方が処理が早いと何処かにかいてあったので・・・。
0649デフォルトの名無しさん
NGNGMe.小林を二つ書くくらいなら関数にしろよ。
0650647
NGNG0651しろ
NGNG質問ですが、例えばこのような書き方をする場所が一度しかなくても
関数にしてます?
どの程度の使用頻度で関数にするとか決めてます??
実行速度とか、保守の面とかではどうなんでしょう?
ご参考までに教えていただけると嬉しいです。
0652しろ
NGNGこの場合ではNzは使った事無いな。特に問題はないですか?
無いなら便利そうだから使ってみようと思うけど・・・。
■ このスレッドは過去ログ倉庫に格納されています