質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

3回答

9340閲覧

ACCESSのテーブルのフィールドの型を、外部から変更したい

neet_studier

総合スコア21

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2018/04/18 13:01

不真面目な質問に感じられるかもしれませんが、よろしくお願いします。

自分で作った「日報管理.accdb」というファイルがあります。
ただ、すでに自分の手元になく、使う人に渡してしまっています。
このファイルの中の「tblBasic」というテーブルの、「交通費詳細」というフィールドのデータ型を、本来はテキスト型にしなくてはならなかったのを、間違って通貨型にしてしまったことに気がつきました。
このままでも月末までは不具合が発生することはないのですが、早急に、使用者に気づかれずに、このフィールドのデータ型を修正したいです。

市販ソフトなどでよくある、「修正パッチ」のように、何らかの修正処理用のファイルを使用者に渡し、一度だけ実行してもらうことで、修正を完了させるようなことってできないでしょうか?

要約すると、やりたいこととその条件は ↓ の通りです。

  • 対象ファイルは、日報管理.accdb
  • 対象ファイルの場所は、おそらく、使用者のPC(WindowsのパージョンもPCの名前も不明)のデスクトップの上の何らかのフォルダ内(フォルダの名前不明)
  • 対象テーブルは、tblBasic
  • 対象フィールドは、 交通費詳細
  • 修正したいのは 通貨型 → テキスト型
  • 使用者には「ただのバージョンアップです」とだけ知らせ、こんなマヌケなミスの修正だとは知らせたくない
  • 修正したいのはやまやまだけど、それ以上に、元のファイルを壊してしまうことは絶対に避けたい
  • 使用者がその修正用ファイルを実行後に捨てず、後日違って再度実行しても問題ないようにしたい

以上です。

ACCESSファイルの中を編集する以上、VBAを使うべきなんでしょうか?
なにかこういう場合の定番スクリプトとかあるんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2018/04/18 13:04

無駄なプライドは捨てて, 素直に瑕疵が有ったことを明かしてファイルを修正すれば(してもらえば)よかろうと. (もちろんバックアップを前提に)
guest

回答3

0

ベストアンサー

ALTER TABLE ステートメントを使用して修正はできます。
上記リンク先にはVBAのサンプルもありますので、vbsで行うとかの方法も考えられます

以下サンプル。

SQL

1ALTER TABLE tblBasic ALTER COLUMN [交通費詳細] TEXT(255)

ですが、アクセスを開いてテーブルの属性を変更するだけなので、手順書を作成して使用者にお願いするのが一番労力が少ないし、誤りも少ないと思います。

それよりも、属性を変更した場合、型のアンマッチでエラーになる場合が多いですが、テスト済みですか?
そちらの方が気になります。

投稿2018/04/18 14:14

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neet_studier

2018/04/19 11:54

ご回答ありがとうございます。 ご案内のステートメントじたい知りませんでしたので、とても参考になりました。 たしかに操作者にお願いして修正してもらうのがいいのですが、ACCESSにまったく明るくなく、フォームのボタンクリックとテンキー操作以外は怖くてやりたくないという方が操作しているのもあって、何らかの遠隔操作での修正を模索していたところです。自分の恥をさらして評価を下げることもですが、要修正のファイルだったと知って操作者に恐れられることも危惧してました。 なお、アンマッチエラーですが、そのフィールドには、どのレコードでも空白ばかりだと思うのですが、その点もチェックしたうえでALTER TABLE ステートメントを実行するようにします。 ありがとうございました。お騒がせしてごめんなさい。
sazi

2018/04/19 14:08

いえ、言っているのは属性を変更した後の話です。 演算しているような箇所で文字属性に変更するとエラーになるようなケースです。 暗黙で変換されて問題無ければいいですけど、変更した後で一通りテストは行った方が良いという事です。 もしそれでロジックが修正になったりしたら、そもそも属性変更だけでは済まなくなりますので。
guest

0

「マヌケなミス」をした自覚があるのに、怒られないためか恥をかきたくないのか知りませんが、誤魔化す方法を人に聞いているんですよね?
よく技術者のため質問板でこんな技術者として恥ずかしい質問ができたものです。
ネット上なら恥ずかしいとも思わないですか?技術者としての自覚はありますか?


目的としていることは、saziさんからのアドバイスで実現できると思います。
単にALTER TABLEを流すだけでは再利用された時にエラーがでてしまうので、エラートラップも必要でしょう。
※項目定義の変更なので繰り返してもエラーにはならないかも。


目的のものができたとして、それを「ただのバージョンアップ」と偽って実行させるのですよね。
それで怒られたり恥をかかずに済むのかもしれませんが、それが何を生むかわかりますか?
「マヌケなミスをしても誤魔化せる」という経験が積まれるだけですよ?
失敗したときにちゃんと苦水を飲まなければ、また安易に同じ失敗を繰り返します。


そもそも「ただのバージョンアップ」って何でしょう?
私なら訳のわからないバージョンアップ版がいきなり配布されたら、何が変わったのか気になって仕方ありません。
もし項目の型を変えたことで意図せず動作が変わっているところがあったらどう対応するつもりですか?
また嘘を重ねて「ただのバージョンアップ」で誤魔化しますか?


人間なのでミスをすることは誰にでもあると思います。
大事なのはミスとどう向き合うかです。
私なら誠実に謝罪して「バグフィックス」としてリリースします。
そんな恥は二度とかきたくないから次回から注意するようにもなると思うのですが、どう思われますか?


厳しい言い方になりましたが、技術者としては配布モジュールの改善だけでなく意識改善もされたほうがいいと思いましたのであえて言わせていただきました。
失礼な言動についてはお詫びいたします。

投稿2018/04/19 02:13

編集2018/04/19 02:35
jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/04/19 02:59

>不真面目な質問に感じられるかもしれませんが と言われているので、意識はされているんだと思います。 相手に認知して貰って作業を行うのに弊害があるような内容には見えませんでしたが、 相手との関係がうまくいっていないのかなとは思いました。
jawa

2018/04/19 04:28

>>不真面目な質問に感じられるかもしれませんが >と言われているので、意識はされているんだと思います。 そうですね。 私も諸処事情はあるのだろうとは思いましたが、それでも技術者として誤魔化す対応は勧めたくなかったので敢えて苦言を書かせていただきました。 不快に思われましたら申し訳ありません。 >相手との関係がうまくいっていないのかなとは思いました。 これもそうなのかもしれませんね。 設計者ー製造者ー利用者など、相互の関係を良好に保つのも大切なことだと思います。
sazi

2018/04/19 04:56

不快には思っていません。同じように隠すことは良くないと思っていまして、私が回答したことが行為を肯定しているように取られてもよろしくないかと思いましたので、コメントさせていただきました。 ただ、聞く耳持たない相手の場合、敢えて伝えない事もあったりしますが・・・
jawa

2018/04/19 07:01

>聞く耳持たない相手の場合 私にもそういった経験はあります。 関係を悪化させないために、その場は穏便な対応をするしかない時もあると思います。 しかしそれが自身の面目を保つためだとしたら、それはどうかと思った次第です。
guest

0

「不真面目な質問に感じられる」ことはないですが、
不真面目な方法を1つ。

似たような経験があって、しかし旅費等の問題があるため
回収して改修できない”文章”があった。

私(およびの部下)の対応: 
リモート操作ツール、確かWindowsサーバの
リモートPC操作ソフト(VNCソフトに相当)を
そのPCに入れてもらい、勝手な口実を作りアクセス。

そして本来の目的のブツを
改修or回収、交換していました。

投稿2018/04/18 13:33

kawakawa2018

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neet_studier

2018/04/19 11:44

ご回答ありがとうございました。 いいお話をうかがえてよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問