Access VBA 質問スレ Part1

■ このスレッドは過去ログ倉庫に格納されています
2012/02/06(月) 22:53:46.88
AccessのVBAに関する質問スレです

★1 質問テンプレ(雛形)は用意しませんが、OSとAccessのバージョンは必ず書きましょう。

★2 AccessのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 AccessのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。

 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★5 わからなければとりあえず「マクロの記録」(Alt, T, M, R)

関連スレ
Excel VBA 質問スレ Part23
http://toro.2ch.net/test/read.cgi/tech/1327763113/l50
2017/05/16(火) 12:59:39.86ID:Gxqu5M/V
そもそも質問の意味がわからない。
任意のリストをコンボボックスに表示する方法は分かってる?
或いは指定テーブルの指定フィールドをコンボボックスに表示する方法とか。
それが分かれば技術的な問題じゃ無くて頭の問題でしょ。
726718
垢版 |
2017/05/16(火) 13:12:32.50ID:CV++bHOB
>>725
職場では検証や練習の時間が取れないので、自宅で練習した上でやりたいのですが
自宅にはAccessが無いので上記のような質問になってしまいました。
2017/05/16(火) 14:13:45.32ID:Gxqu5M/V
>>726
いや、それは分かるけどコンボボックスに何かを表示する方法は分かってるのかという話。
それが分かれば後は頭の体操の話でしょ。

任意のリストでやるなら5個の文字列を連結したものを都度作成すれば良いし、テーブルでやるならUNIQUEにして追加削除すれば良んじゃね。
2017/05/16(火) 22:08:47.69ID:g0o7D5lq
田中,安倍,中曽根,福田,小泉, 麻生 ・・・ がどう入力されるかだけど
田中,安倍,中曽根,中曽根,田中,小泉,福田,小泉,安倍, 麻生 ・・・
とかだと直近の重複しない名称が都度ドロップダウンリストボックス内で
変化していきそうで、それはそれで入力時に戸惑いそうだが

ドロップダウンリストボックスのソースを重複クエリ(>>722の言うstrSQLでもいいけど)で
セットすればいちばん簡単だけど、直近を抽出するにはレコード番号とか入力日時とか
を基準にして並べ替えする てことかな

氏名は例だろうけど、現物は何だろ? 面白そう 入力のたびに「あれ?」「ん?」って
声が聞こえて来そうだ(本人が使うんじゃ無ければ)
729718
垢版 |
2017/05/16(火) 22:31:51.86ID:CV++bHOB
>>728
現物は顧客リストとパートナー営業さんのリストです

勿論、上記の氏名は例ですが、中曽根さんのデータを呼び出して30分くらい経って
「中曽根さんの○○の項目を更新忘れていたわ」ということが多々あるので、一旦呼び
出した人は履歴から簡単に再呼び出ししたいです。

平たく言うと、WebブラウザのHP履歴みたいなもんです。
730デフォルトの名無しさん
垢版 |
2017/05/16(火) 22:59:07.91ID:9DoKORjf
オートコンプリートね。
テンポラリテーブル作るのが
一番簡単かと。
731718
垢版 |
2017/05/18(木) 02:38:44.45ID:v5KhOq09
>>730
ありがとう
732デフォルトの名無しさん
垢版 |
2017/06/06(火) 14:35:30.83ID:7I4Q1TJn
フォームから入力されたデータってレコードソースで指定しているクエリのテーブルに格納されるって認識あってますか
733デフォルトの名無しさん
垢版 |
2017/06/06(火) 14:38:41.23ID:7I4Q1TJn
>>732に追記です
DoCmd.RunCommand acCmdSaveRecordで保存されたデータはレコードソースのテーブルに格納されるでいいでしょうか。
基本的な質問ですみません
2017/06/07(水) 12:39:00.78ID:m3sH3bSc
テキストボックスが連結されていれば入力内容はテーブル(の連結フィールド)に保存されます。
735デフォルトの名無しさん
垢版 |
2017/06/07(水) 12:47:43.50ID:bbXeH7ar
>>734
すみません、テキストボックスとは何を指してますか、クエリのソースですか?
2017/06/07(水) 22:15:49.46ID:JlTkUU5d
>>735
フォームに配置するオブジェクトのひとつ。他にコンボボックスとかリストボックス、コマンドボタンなんかがあります。
2017/06/07(水) 22:22:23.86ID:+eS8ypoQ
何やら禅問答の様相を呈しているようだが
その入力フォームのレコードソースがクエリで、対象のテーブルに保存できるか?
という質問なら、DoCmd ・・・なんぞを使わずともレコードが移動した時点で保存される

ソースの無いフォーム上のテキストボックス群(等)に入力して、例えば[保存ボタン]などで
対象のテーブルにデータを保存するような使い方の場合には、その DoCmd ・・・を使って
それぞれ保存したいフィールドに各テキストボックス群(等)のデータを保存する でよろしいか
テキストボックス、コンボボックス、リストボックス、チェックボックス等々があるから・・群(等)と書いたけど
738デフォルトの名無しさん
垢版 |
2017/06/08(木) 12:41:56.61ID:Gl6SA9F6
>>737
はい、フォーム上のテキストボックスに入力されたデータの保存について聞きたいのですが、レコードソースのクエリで複数テーブルが結合している場合、共通のカラムのデータは結合しているすべてのテーブルに保存されますか
2017/06/08(木) 21:37:20.87ID:QO2QuDWb
>>738
すみません、分かりません。
カラムっていうのは何だろ?フォームはデータシートビューなのかな。
2017/06/08(木) 22:12:23.06ID:ymWmjIat
百聞は一見の喩えじゃないが、二日費やしてる間に試しで入れてみれば
100ヶテーブル繋げてても全部入るだろ あ、Max32だったか しかも結合は16までか
じゃあ16で  で、へぇ、なるほど、こうなるんだ って理解に繋がる
741デフォルトの名無しさん
垢版 |
2017/06/09(金) 14:32:01.31ID:273W91RO
>>739
カラムは列(項目)です
フォームビューです
本番環境で作業してるため、登録処理ができないので、教えていただきませんでしょうか
742デフォルトの名無しさん
垢版 |
2017/06/09(金) 14:33:57.33ID:273W91RO
レコードセットがダイナセットで、レコードソースのクエリが2つ以上のテーブルを結合しているときの登録されるテーブルを教えてほしいです
2017/06/09(金) 19:37:19.10ID:arHWLDZ3
クエリが複数のテーブルからできていても
そのクエリのカラムはどっちのテーブルのカラムか区別されてるぞ
2017/06/09(金) 23:11:20.98ID:LJNVGfcK
>>742
フォームプロパティのレコードソースからクエリのデザインできるウィンドウを開きます。項目フィールドがどのテーブルのものか定義されています。
正確な名称で答えられなくてすみません。布団の中からなので。
2017/06/13(火) 12:35:22.53ID:CYlYHOF+
easyComm使ってrs-232cで測定器つないでデータ取る、みたいなのが得意な人いる?
2017/06/13(火) 15:22:33.36ID:mycfBP+w
いない
2017/06/13(火) 21:12:00.58ID:R7Yl4a9U
いませんか。仕方ない、コリコリ書くかな。
2017/06/16(金) 21:29:11.74ID:YDbGqV+E
出来た!動いた!
測定器の制御とか本当はvisual studioとかで作成するんだろうけど、パソコンの性能がいつの間にか上がっててACCESSでもいけたよ!
749デフォルトの名無しさん
垢版 |
2017/06/17(土) 17:55:53.00ID:n14YEU6w
そのうち性能ωが上がってACCESSでBIGデータ扱ったり機械学習したりする時代が来るのか
750デフォルトの名無しさん
垢版 |
2017/06/22(木) 11:21:35.79ID:1rSOLJ2h
すごい基本的な質問ですみません
accessのSQLの言語って何ですかね
MYSQLとかですか
2017/06/22(木) 15:04:17.20ID:+TFSs5XU
SQLが言語だよ
すとらくちゃーどくえりーらんげーじ
だったかな
2017/06/22(木) 15:25:40.99ID:9kjviait
質問の意味も意図もよくわからんね。
access以外のシステムからSQL文をコピペしたいってことなのか!?
2017/06/22(木) 15:27:59.87ID:T7aSUWBW
>>750
MYSQLもSQL。
仕様があって、それに沿って各社実装してる。
が、独自部分も多いから同じSQLだからといって何処でも動くとは言えない。
754デフォルトの名無しさん
垢版 |
2017/06/22(木) 15:43:16.41ID:1rSOLJ2h
>>753
SQL言語もポスグレだったりPLSQLだったりあるじゃないですかそれで言うと何になるのか聞きたいんですけど
755デフォルトの名無しさん
垢版 |
2017/06/22(木) 15:44:58.51ID:1rSOLJ2h
勘違いしてたらすみません
SQLとMYSQLの関係ってCとC♯の関係ですか
756デフォルトの名無しさん
垢版 |
2017/06/22(木) 15:45:47.90ID:1rSOLJ2h
>>752
コピペでそんなこと気にする必要ありませんよね
気になったから質問したまでです
2017/06/22(木) 15:53:28.78ID:wdLd6PlL
SQLとMYSQLの関係は他人のSQLと自分のSQLの関係です
昔、金井克子という人が歌ってました
2017/06/22(木) 16:58:01.05ID:zFId4oiO
SQLというのはそれが言語
(たまにSQL言語以外の事をSQLと言っている場合もある)

ポスグレやMYSQLやACCESSはそのSQL言語を使う環境(の一部)
環境によりSQLに多少の差はある

ポスグレはSQL言語じゃない
PL/SQLはSQLを拡張した言語
ACCESSならSQLを超える範囲の言語はVBA
759デフォルトの名無しさん
垢版 |
2017/06/22(木) 17:53:43.99ID:1rSOLJ2h
>>758
よくわかりました、ありがとうございます
2017/06/22(木) 21:11:47.56ID:f/XKrCgm
>>756
他のSQLの構文をそのままコピペしてAccessで使うのは
うまくいかないこともある ことを気遣ってくれたんじゃね?
そんな言い捨てるようなレスはいけないと思いますよ
761デフォルトの名無しさん
垢版 |
2017/06/22(木) 21:17:42.32ID:t4uJuvar
>>760
なるほど
>>752失礼しました
2017/06/22(木) 23:45:58.46ID:Ddgcj+Nb
>>761
素直な態度の人は成長するらしいですね。
良い事良い事。
2017/06/30(金) 23:17:34.97ID:8BMFafeA
何でも良い、誰でも良いから質問すれ。
764デフォルトの名無しさん
垢版 |
2017/07/03(月) 12:15:52.25ID:HFvRoHNk
変数の宣言を強制するにチェック入れたのに
Option Explicit
が出てこないのですが
どうしたら出て来ますか?
2017/07/03(月) 12:56:00.26ID:hBIZ2owM
既存のコードには入らないよ
新規で作成するオブジェクトには入る
766デフォルトの名無しさん
垢版 |
2017/07/04(火) 16:03:28.67ID:ce7knrBK
Accessの神々よ、御教えを!

Accessでは、CHECK 句が使えないようですが、
カラム数が多いため、
いちいちプロパティから入力規則を設定するのは骨が折れます。

SQL で一括設定する方法をご伝授くださいませ〜
2017/07/04(火) 22:10:20.82ID:WoXW+1QF
えー、クエリ作ってからSQL表示してコピペ。
そんな事聞いてないよね。
768デフォルトの名無しさん
垢版 |
2017/07/05(水) 02:09:17.79ID:EckUEWaI
>>765
なるほどさんくす
2017/07/05(水) 10:03:04.42ID:Qpg00Afa
view
2017/07/05(水) 17:39:45.65ID:XEX8l1it
win7x64-office2016x86環境下のみで再現するらしい
xls出力からコペピ張り付け罫線操作等々やってる処理で張り付したシートがズレル不具合発生
ネット調べても一切情報でてこなくて期待込めてofficeアプデしたら実行時エラー1401
空白でないセルが云々カンヌん泣きたい
2017/07/20(木) 13:40:54.23ID:AoFZnXDG
自己レス
office365BPの2016でのみ再現
別シートの複数列コピー選択状態でAAセレクトインサートやろうとするとコピーペになる
セレクト前に空白セル1コピーで回避
772デフォルトの名無しさん
垢版 |
2017/07/21(金) 16:32:01.78ID:28Rvh+yS
クエリを実行したときに全件レコードを取得できてないのに検索結果画面が開くときってない?
▷|←このボタン押すと検索結果の件数が出てくるんだけど、押してから出るまでに時間がかかるってことは全件レコード取得できてないってことだよね
773デフォルトの名無しさん
垢版 |
2017/07/21(金) 16:32:40.55ID:28Rvh+yS
この現象を何なのか教えてほしい
774デフォルトの名無しさん
垢版 |
2017/07/21(金) 17:16:56.11ID:PYWMukgm
表示した後でも数字が勝手に増えるってこと?
775デフォルトの名無しさん
垢版 |
2017/07/21(金) 17:49:46.53ID:28Rvh+yS
>>774
いや、クエリのSQLをorderby句を書かなかったとき、全件検索する前に検索結果画面が開く
776デフォルトの名無しさん
垢版 |
2017/07/21(金) 17:55:49.86ID:28Rvh+yS
@orderby書いてクエリを実行する→1/2500みたいに結果件数がでる
Aorderby書かないでクエリを実行する→1 結果件数が上記と違いでない
▷|このボタンおすと上記と同じように1/2500となる

@の実行時間10秒
Aの実行時間1秒 ただし▷|ボタン押すと10秒くらいかかる
2017/07/21(金) 21:47:28.80ID:GPYD2Qke
なんかオプションに無かったかな。最初の表示するぶんだけ読み込んでとりあえず見せておいて裏で続きを読むって機能をオンに、みたいな。
778デフォルトの名無しさん
垢版 |
2017/07/24(月) 04:02:58.29ID:UL92A3MD
>>777
あれば教えてほしいですね
2017/07/24(月) 15:06:22.21ID:BdqEvISL
あった気がする
780デフォルトの名無しさん
垢版 |
2017/07/25(火) 22:56:57.38ID:EiidKUEl
会社テーブル
id  会社名  ・・・
1.  A社
2.  B社
3.  C社
4.  B社

職員テーブル
name  会社id  ・・・
山田.  1
鈴木.  1
飯田.  2
野口.  3
岡本.  4

一対多のリレーションがありまして
会社マスターにダブり登録されている場合(この場合B社)
楽に修正する方法はないでしょうか

250社くらいダブリやトリプルしていて困っております
2017/07/26(水) 07:07:59.14ID:wP3Z6w42
名寄せマスター
名寄せID 会社ID 新会社ID
1      2     2
1      4     2

名寄せマスターと職員テーブルをJOINしてUPDATE
というのはどうですか?
2017/07/26(水) 07:12:28.72ID:XR9PfPcp
その会社マスターがおかしいのを放置するのか修正するのかで違ってくるよね
2017/07/26(水) 16:42:27.76ID:Pvb1ow9Q
合併したんかね
784デフォルトの名無しさん
垢版 |
2017/07/27(木) 20:31:02.25ID:6NlFfxVd
>>781
なるほど
重複クエリに各会社の最小IDを連結して名寄せテーブルを作成し
JOINしてUPDATEしました

名寄せテーブルを作成しないでクエリだけでUPDATEまでもっていくのは
この場合駄目なんですね はじめ理解できず悩みました

>>784
JOINしたAccessのデータをExcelに吐き出し各職場に配布、各々で修正追加。
一年以上たって回収しAccessに貼り付けられて今の状態です。
正確には職員テーブルじゃなくて顧客テーブルですね
2017/07/27(木) 20:40:42.96ID:DKmshiqQ
なあんだ、Excelの段階で調整しちゃえば余計な苦労しなくて済んだのに
2017/08/01(火) 21:53:22.72ID:FQn2qD+M
初心者なんで教えて欲しいんだけど、フォームの次へボタン押した時に次のレコードが
表示されないのだがどうしたらいいか教えて欲しい。バージョンは2013
Private Sub Form_Load()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("名簿テーブル",dbOpenTable)
Me!名前テキスト = rs!名前
Me!カナテキスト = rs!よみがな
End Sub
Private Sub 次へボタン_Click()
DoCmd.GoToRecord , , acNext
End Sub
2017/08/01(火) 22:21:37.22ID:16hy4odR
フォームのソースが名簿テーブルならフォーム読み込み時の名前とよみがなセットするコードは無くても先頭レコードが表示される。
フォームのソースを確認しましょう。
非連結フォームならボタン押した時に次のレコードを読み込んで名前とよみがなセットするコードが必要だけど、キーが不明なので何ともアドバイスできません。
長々と書いたがわかりにくいね、すまん。
2017/08/02(水) 22:57:21.98ID:GleVclNw
>>787
ありがと
789デフォルトの名無しさん
垢版 |
2017/08/28(月) 11:23:53.36ID:XLKoN0Ik
神さま教えてください。

ADODB.Commandでのインサートが失敗しても
エラーが出ないのですが、エラーハンドリングの
方法を教えてください。

よろしくお願いします。
2017/08/28(月) 21:14:51.01ID:6Oo2q0tu
on error
2017/08/29(火) 08:37:26.00ID:SOL0jppX
むしろonerrorしかないと思うが、他にやり方あんの?
792デフォルトの名無しさん
垢版 |
2017/08/29(火) 09:14:08.50ID:WIE1SoZ9
レスありがとうございます。
ON ERROR は当然やってまして
その上での質問です。
793デフォルトの名無しさん
垢版 |
2017/08/29(火) 21:25:59.80ID:BqQa7G9t
失敗ってなんだ。
戻り値を取ればAffectedRowsになってるだろうから
それで判断するか追加されたはずの行数をあらためSELECTするとか
2017/11/15(水) 11:14:08.03ID:PQCfnSyv
>>786
そのコードはFormがLoadされた時に名簿テーブルを開いてRecordsetに格納し、名前とカナをテキストボックスに入れるというものと次へボタンを押した時にFormがLoadされた時の処理とは全く関係なく次のレコ−ドに移動するもの。

ところで次へボタンでの次のレコ−ドってのは何のデ−タなんだい?
改めて言うけどFormがLoadされた時の処理なんて知らないからとAccess君は言っている。

要は、DoCmd.GotoRecordってのはデータとオブジェクトが連結されていることが想定されていて、連結されているから既にオブジェクトにレコードが表示されているわけだが、それに対して次のレコ−ドと言ってる。

一方、FormのLoad時の処理は連結関係無くデ−タを自ら取ってくるもの。
こちらのやり方を取るならRecordsetをPublic変数にするかForm内でのPrivate変数として保持しておき、他のイベント(次へボタンクリックのような)で使いまわすというやり方になる。
2017/11/22(水) 10:10:39.42ID:as8vu/t7
整数型、重複なしの列を書き換えるときはどうしてますか?たとえば、
2 1
3 → 2
1 3
にしたいときに2→1の時点でエラーが出ると思うので回避策を検討しています。
一時的に重複なしを解除して、終了時点で重複なしへ戻す方法や、一旦一時的に重複しない数字に書き換えて、それから再度書き換えるべきか悩んでいます。
なにか一般的な方法はございますか?
2017/11/22(水) 10:11:55.37ID:as8vu/t7
あれ、スペースがおかしくなっている。
列を書き直すときにたとえば
2→1
3→2
1→3
としたいのです。具体的にはidを振り直す作業です。
2017/11/22(水) 12:23:57.98ID:TDbCG25M
レンジのソートでよくね?
もしくはフィルタ付けて並び替えてからフィルタ解除とか
2017/11/22(水) 12:27:01.49ID:taN4cymO
idには触らないで、整数型のフィールドを追加します。そのフィールドでやりたい放題やります。
799
垢版 |
2017/11/22(水) 12:46:48.77ID:MjBhGus4
どうしてもやりたけりゃ、swapしていきゃいいんじゃないの?
最初は2→1にしたいから、
1 3 2に。
次は3を2にして
1 2 3
に。
入れ替え自体は、UPDATE xxx SET unique = CASE WNEN unique=1 THEN 2 WHEN unique=2 THEN 1 ELSE unique END
でCASEで書いちゃえば入れ替えられる。
1クエリ内で完結したら、制約はかからない。
2017/11/22(水) 13:21:54.54ID:as8vu/t7
>>797
済みません。AccessにもRangeというのがあるのですか?あと、フィルターの使い方も御教示をお願い致します。
>>798
それが、当該idを参照しているテーブルが20個以上あるので、別のコラムという訳にはいかないのです。
参照先を変更するとなるとクエリやらVBAのコードやらを書き換えないといけないので大変だと思います。
>>799
バブルソートみたいなものですね。レコード数が3万ありますので、何となく時間がかかりそうな気がしますが、試してみます。

今はソート後にDMax+iのループで重複しないidへ書き換えて、書き換えが終わってからDMaxを引くという2段階の作業をしています。
(参照元のidも2段階の書き換えをしています。))
我ながらドン臭いやり方だと思うので、もう少しスマートな方法があれば御教示をお願いいたします。
2017/11/22(水) 15:00:03.20ID:t4MJ2LxN
その列自体を書き換えちゃうの?
じゃあ、今入ってる値は必要無いってこと?
だったら削除して連番振り直したら?
802デフォルトの名無しさん
垢版 |
2017/11/22(水) 15:02:12.97ID:TZAtmSaI
今の時代なにが楽しくてAccessなんてやるんだ
2017/11/22(水) 15:50:01.09ID:as8vu/t7
>>801
idだから主キーです。Nullは不可だと思います。
804
垢版 |
2017/11/22(水) 16:48:33.62ID:QspO8Ati
>>800
もう組み合わせがわかってて、ほんとに単発で1回きりなら、
エクセルで対比表作って、CASEの列とWHENの列足してコピペでクエリ作っても良いけど、全く健全な保守ではない。
2 1
3 2
1 3
に列追加してオートフィルで

WHEN unique= 2 then 1
WHEN unique= 3 then 2
WHEN unique= 1 then 3
ってして、
unique= CASE

ELSE UNIQUE endで挟んで、コピペでテキストエディタに貼り付けて、テキストエディタからコピペでAccessに貼り付けるやつ。

しょっちゅうやるならテーブル見直そう。
2017/11/22(水) 16:57:08.62ID:QHiNhW2y
>>803
方法はいくらでもあると思うけど。
Field追加して連番を振って、追加したFieldを主キーに変更して元の主キーのFieldを削除するとか。
試してないからできるか分からんけど。

そんなことせずに振りなおすならOrderByでId順にして小さい値から振りなおしたら?
2017/11/22(水) 16:59:54.83ID:QHiNhW2y
ただ、主キーを振りなおす意味が分からない。
そういうもんじゃ無いと思うし、テーブルの連結によっては滅茶苦茶になるのは分かってるよね。
807
垢版 |
2017/11/22(水) 17:57:43.64ID:QspO8Ati
主キー振り直すのは、やむを得ずやるのはそのアプリのライフタイムに何発かあると思う。
業務系だと、「スキーマ変えるな」「デカいトランザクションはるな」「一時テーブルすら作るな」とか無茶苦茶言いよることもある。
でも、しょっちゅうやるならホントに設計考えたほうが良い。
2017/11/22(水) 18:29:23.78ID:2YVJuPMl
別に列作ってそっち主キーにすれば?
2017/11/22(水) 23:10:16.27ID:as8vu/t7
>>805
>>そんなことせずに振りなおすならOrderByでId順にして小さい値から振りなおしたら?
そんなことが出来るのですか?DAOもADOも1行ずつしかupdate出来ないから、重複データーが発生してしまって出来ないのですが…
>>806
ワークテーブルまで含めて数えなおしたら、35個のテーブルで件のidを使用していました。なので35個のテーブルに対して変更を行わないといけませんね。
2017/11/22(水) 23:11:54.97ID:as8vu/t7
>>808
それで解決するなら簡単ですね。やってみたいですね。
元の列の属性がすべて引き継がれるならいいですね。試してみます。
2017/11/23(木) 09:57:12.17ID:wkO+ZdSN
主キーの役割はレコードをユニークにすることだろ
並べ替えが必要ならそのための項目を別に用意するわ

作業量を問題にしてるけど
無茶な運用は後に響くよ
分かり易さを優先すべきだと思うわ
2017/11/24(金) 12:10:31.02ID:fRZqdK5G
主キーを解除して、重複可にして連番を書き込みました。その後に元に戻しました。変更前後の番号を配列に書き込んでおいて、その配列の値から関連するテーブル全部において置換作業を行うことにしました。
idが2万5000レコード、関連するテーブルのレコードが全部で100万近いのですが、2万5000の置換を100万レコードに対して行うので時間がかかりそうな気がしています。どのくらい時間がかかるのか計算する方法がありますかね?
2017/11/24(金) 12:21:50.25ID:Q2HEJk5l
accessにSQLコストを計算する機能はないよ
2017/11/24(金) 19:17:11.31ID:fRZqdK5G
主キーの削除をVBAでやろうとしているんだけど、メソッドが見つからない。SQLでやるしかないのかな?
下を読むとdeleteメソッドはダメみたいだし。
https://msdn.microsoft.com/ja-jp/library/office/ff197351.aspx
>>Deleteメソッドは、インデックスオブジェクトが新しいと、データベースに追加されていない場合にのみサポートします。
2017/11/25(土) 10:30:03.03ID:eU9hnSW+
無理矢理面倒臭い事をしているようにしか思えない
まぁ人の話を聞く気が無いみたいだし
好きに調べてやればええよ
2017/11/27(月) 17:21:43.17ID:twASlFZz
SQLであっさり出来たわ。後は置換をどうするかだな。関連するテーブル全部を置換できればすべて解決するけど、何を使うかだな。
SQLは遅いんだっけ?レコードセットでループ回す方が速いと読んだ気がする。
2017/11/27(月) 22:26:05.40ID:HF1f2kGW
>>816
普通に考えればSQLの方が速いに決まってると思ってたが。
遅いとしたらその文書いた奴が悪いという印象。

ま、DB系については大したレベルにないから俺が間違ってるかも。
2017/11/28(火) 05:38:20.27ID:GeGdCCsE
業務用ソフトのテーブルを眺めていたら、テキスト型のフィールドがあって、256桁の数字が羅列してあった
様々な設定を指定された桁に格納しているようですが、このようなデーター保存方法は一般的なんでしょうか?
他の言語でもあるのでしょうか?
2017/11/28(火) 05:58:01.76ID:Brt1t867
>>818
あるんじゃないの?としか。どんなテーブルとか、フィールドの名前とか、なんかヒントはないですか? 様々な設定も謎が深まるだけですね。
2017/11/28(火) 09:43:49.19ID:GeGdCCsE
たとえばあるフォームAのオプションボタンの値を98桁に書き込む、フォームBのチェックボックスの値は例えばCstr(Abs(True)))でstringへ変換して105桁に書き込むとかそんな感じです。
合理的な気もするのですが、こういう方法は検索しても見つからないので一般的なのか、特殊なアイデアなのか知りたくなりまして。
2017/11/28(火) 11:59:57.14ID:vHFzkUKA
すくなくともRDBを使う上ではやるなって言われてるやり方

固定長ファイルにデータ保存してるようなシステムなら結構あったけどね
2017/11/28(火) 16:08:53.51ID:GeGdCCsE
>>821
そうなんですか。面白そうな話しなので調べてみようと思います。その手法はどういう名称なんですか?もしくは検索ワードを御教示頂けましたら幸いです。
823
垢版 |
2017/11/28(火) 18:29:06.23ID:i1R8M5pm
RPG区分列とかじゃないの?古い呼び方だけど。
酷すぎてだれも触りたくないやつ。
RDBに移すような事があったら、末期には照合順序をbinaryにするしか無くなったりすごく苦しむから辞めた方がいい。
メリットらしいメリット無い。LIKEで雑に'[A-C]__1_2'みたいにSELECTできることぐらい。
2017/11/28(火) 18:44:14.15ID:GeGdCCsE
残念ながら、ググっても何もヒットしません。
なにかヒントをお願い出来ますか?
2017/12/01(金) 16:18:17.01ID:xc+Vk5Dr
RPGとRDBで検索したら関係ありそうなのがいくつかヒットしたけど。

検索能力は俺の方が上みたいだな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。