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

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

ただいまの
回答率

90.61%

  • SQL

    2330questions

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

  • VBA

    1734questions

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

  • Windows

    1407questions

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

  • Access

    409questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 372

neet_studier

score 12

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

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

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

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

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

以上です。

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • defghi1977

    2018/04/18 22:04

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

    キャンセル

回答 3

checkベストアンサー

+3

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

以下サンプル。

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/19 20:54

    ご回答ありがとうございます。
    ご案内のステートメントじたい知りませんでしたので、とても参考になりました。

    たしかに操作者にお願いして修正してもらうのがいいのですが、ACCESSにまったく明るくなく、フォームのボタンクリックとテンキー操作以外は怖くてやりたくないという方が操作しているのもあって、何らかの遠隔操作での修正を模索していたところです。自分の恥をさらして評価を下げることもですが、要修正のファイルだったと知って操作者に恐れられることも危惧してました。

    なお、アンマッチエラーですが、そのフィールドには、どのレコードでも空白ばかりだと思うのですが、その点もチェックしたうえでALTER TABLE ステートメントを実行するようにします。

    ありがとうございました。お騒がせしてごめんなさい。

    キャンセル

  • 2018/04/19 23:08

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

    キャンセル

+1

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/19 20:44

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

    キャンセル

+1

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


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


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


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


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


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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/19 11:59

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

    キャンセル

  • 2018/04/19 13:28

    >>不真面目な質問に感じられるかもしれませんが
    >と言われているので、意識はされているんだと思います。
    そうですね。
    私も諸処事情はあるのだろうとは思いましたが、それでも技術者として誤魔化す対応は勧めたくなかったので敢えて苦言を書かせていただきました。
    不快に思われましたら申し訳ありません。

    >相手との関係がうまくいっていないのかなとは思いました。
    これもそうなのかもしれませんね。
    設計者ー製造者ー利用者など、相互の関係を良好に保つのも大切なことだと思います。

    キャンセル

  • 2018/04/19 13:56

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

    キャンセル

  • 2018/04/19 16:01

    >聞く耳持たない相手の場合
    私にもそういった経験はあります。
    関係を悪化させないために、その場は穏便な対応をするしかない時もあると思います。

    しかしそれが自身の面目を保つためだとしたら、それはどうかと思った次第です。

    キャンセル

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • SQL

    2330questions

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

  • VBA

    1734questions

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

  • Windows

    1407questions

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

  • Access

    409questions

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