• ベストアンサー

Access VBA DB(先頭の0値を消す方法)

お世話になります AccessDBに社員管理番号があるとします ID|社員名|社員管理番号| 1 |太郎 |001234   | 2 |姫子 |021023   | 3 |新免 |12330 | 上記のように決められた数値ではなく (1~9)の数字より先に0値が存在する物だけ一括削除を実行させたいのですが、可能ですか? Ver_Access2003 宜しくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

先頭の0を消すのか、先頭が0のデータを消すのか分からないのですが・・・ VBAではなくクエリです。 [社員管理番号の先頭の0を消す] UPDATE テーブル1 SET 社員管理番号 = Trim(Str(Val([社員管理番号]))); とか UPDATE テーブル1 SET 社員管理番号 = Val([社員管理番号]); [社員管理番号の先頭が0のデータを消す] DELETE FROM テーブル1 WHERE Left([社員管理番号],1)="0"; ではどうでしょうか?

その他の回答 (1)

回答No.2

Access2000の方法ですが、Access2003でも同じだと思います。 文字列のフィールドに入っている数字文字列から、先頭の0を削除する方法です。 一旦、数値にしてからまた数字文字列にすれば、先頭の0が消えます。 1.クエリデザインで社員管理番号だけの選択クエリを作成します。 2.クエリメニューで上記のクエリを更新クエリに変更します。 3.更新の欄に、Cstr(Val([社員管理番号])) と入力する。 4.更新クエリを実行する。 間違いがあるといけないので、MDBファイルのコピーをとってください。

関連するQ&A

  • Excel VBA

    お世話になります。 概要 Excelで入力した値をExcelへ転送させたいのですが 管理簿.xls 社員名|社員番号|記事|販売数値| 太郎 |00120142|  |140 | 花子 |12333457|  |    | 山田 |0123443 | | | エクセル側では販売数値はランダムに入力されています 入力フォーム.xls 社員番号|販売数値| 12333457|200 | 0123443 |10E  | 入力フォーム側では社員番号及び販売数を入力します 入力フォーム内で社員番号を入力するときにエクセル側と社員番号が一致しない 又は、重複していればエラーでそのつど返したい。 入力が終わると実行ボタンで 管理簿に販売数値を入力させたい 管理簿.xls(結果) 社員名|社員番号|記事|販売数値| 太郎 |00120142|  |140 | 花子 |12333457|  |200   | 山田 |0123443 | |10E | 管理簿側はブックの共有をしており数名が開いている場合があります 複雑ですがわか方お願い致します。

  • VBA セル・値の操作方法

    お世話になります。 [概要] 社員1より右のセルに値がある場合は下段にセルを挿入させ 必要なところに値を移動させたいのですがわかる方お願いします。 文言だけではわかりにくいと思い下記に図を挿入します。 [マクロ実行前] |部署|社員名1|社員番号1|社員名2|社員番号2|社員名3|社員番号3| -------------------------------------------------------------- |総務|太郎1  |2      | |営業|太郎2  |3      |太郎3  |4     | |積算|太郎4  |5      |太郎5  |6     |太郎6   |7     | [マクロ実行後] |部署|社員名1|社員番号1|社員名2|社員番号2|社員名3|社員番号3| -------------------------------------------------------------- |総務|太郎1  |2     | |営業|太郎2  |3     | |   |太郎3  |4     | |積算|太郎4  |5     | |   |太郎5  |6     | |   |太郎6  |7     | 又、社員名10ぐらいまで作成予定です。

  • ACCESS2003

    ACCESS2003 OS:winXPです。 アクセスのテーブルのデータが以下のようになっています。 ID  |名称|番号1|番号2|番号3|・・・・・|番号30| 100|太郎|0001|1231|4323|・・・・ 101|次郎|2333|3213|4225|・・・・ ・・・ 番号1~番号30にはIDに紐づくランダムな値が入っています。 IDによって紐づく番号が存在するだけ、30まで列に入っています。 番号30まであるものもあれば、番号1しかないものもあります。 これを以下のように変えたいと思っています。 ID  |名称|番号 | 100|太郎|0001| 100|太郎|1231| 100|太郎|4323|  ・  ・ 101|次郎|2333| 101|次郎|3213| なにかクエリ、VBAなどでいい方法はないでしょうか?

  • Access 削除時にレコード有無チェックは必要?

    お世話になります。 Access2010 10個あるテーブルでそれぞれ社員番号を条件にVBAにて削除クエリを 実行してます。 メインのテーブルである社員テーブルには全社員が登録されて いるので、無条件に削除クエリを実行しておりますが、他の9個に ついては必ずしも該当レコードが存在するとは限りません。 なので、他の9個のテーブルについては削除クエリを実行する前に、 削除する社員番号が存在するかをチェックした上で(社員番号をキーに FindFirst)、存在したら削除クエリを実行してます。 今更ですが、わざわざチェックする必要があるのかな?と。。 元々は「社員番号が存在しないテーブルに対して、わざわざ削除クエリ を実行する意味がない」と思い、チェックするようにしました。 なんとなく、無条件で削除クエリをやるよりは  該当レコード有り?    Yes ⇒ 削除クエリ実行    No  ⇒ 何もしない とやった方がキレイかなと。 しかし、削除するレコードの有無に関係無く削除クエリを実行しても よいのでは?と思った次第です。 要するに該当するレコードが無ければ削除されないし、あれば削除 されるし。 一般的に削除クエリを実行するときは、無条件にやるものなのでしょうか。 ご教示の程、宜しくお願い致します。

  • access table 上書きしてデータ追VBA

    access365 名簿accdbにおいて テーブル1に ID 名前 住所 郵便番号 という項目があり IDは重複不可 数値 テーブル2に ID 名前 住所 郵便番号 という項目があり IDは重複不可 数値 と ふたつのテーブルがあるとき 追加クエリーで テーブル1に テーブル2のデータを追加するときは 同一のIDでは 上書きができません テーブル2のIDが テーブル1にまだ存在しないIDの数値であれば 追加クエリーにより データの追加ができますが 例えばIDが3の人物がいて そのテーブル1の住所が東京で これが新しいデータの格納されているテーブル2では ID3の住所が千葉となったときに これを追加クエリーでIDを3として上書きはできない構造のようです 更新クエリー というのも調べてみましたが ある一定の規則でたとえば物品の値段が100円増しのような 一定の更新条件がある場合であれば更新クエリーが使えますが 上の例のようにテーブル2においてテーブル1にもすでに名前の登録のあるIDのひとの 数人が住所がテーブル2において 新しいものとして変更されていて それをテーブル1に一括で住所の変更のできるVBA 御教示いただけますか (上記の場合ですと住所の変更と郵便番号の変換が同時に当然起きえます) また 同時に テーブル1にはIDの登録もまだない新規IDのひとも テーブル2に存在するとします 要は テーブル2には テーブル1にすでにID人物登録のあるひとと 新規IDのひとが混在している条件で、作りたいと思います すみませんが、おちから頂けると助かります 宜しくお願い致します office365 win10

  • Access2003オートナンバーを任意の値に

    Access2003で、オートナンバーでID番号の管理(主キー)をしています。 このID番号の他に、10桁の数値でプロジェクト管理したいと思っております。 オートナンバーを基に、別IDを作成する方法を教えてください。 なお、この10桁の数値は、先頭の4桁がプロジェクト番号として使用し、 後ろの6桁はオートナンバーのIDと同じ数値となります。 ======================================== (例)  [ID]     [ID2]   1    1001000001   2    1001000002   3    1001000003   〃       〃 ======================================== 下記のURLを参考にしてやってみたのですが、追加クエリを実行しても、 なぜか、オートナンバーフィールドへ追加することができませんでした。 ※追加クエリ実行エラーで、「型変換エラーのためnullに設定しました」となります。 http://www.accessclub.jp/samplefile/samplefile_145.htm お手数お掛けしますが、宜しくお願い致します。

  • Access サブフォームにフィルターをかけるには

    Access初心者です、教えてください。 AのテーブルにIDと名前、BのテーブルにIDと電話番号と管理番号と業種があります。 メインフォームのテキストボックスでAのテーブルからあいまい検索で電話番号を検索、検索結果のIDでBテーブルのサブフォームにフィルターを掛けたいのですが、 どのようにしたらいいのでしょうか?

  • Access2002 2つのテーブルのマージ方法

    いつもお世話になっております。 クエリについてお聞きします。 現在、2つのAccessDBが稼動しており、それを1つにまとめる作業をしています。 2つのDBには似通ったテーブルが存在し、それをマージする方法で悩んでいます。 テーブルA ・社員番号 ・社員氏名 ・フリガナ ・会社コード ・部署コード テーブルB ・従業員コード ・従業員名カナ ・従業員名 ・所属コード フィールドの定義としましては、 社員番号=従業員コード 社員氏名=従業員名 フリガナ=従業員名カナ 部署コード=所属コード となります。 全てテキストのレコードです。 これを、テーブルAを正にして、テーブルBのデータをAにマージしたいのです。 要件としましては、 1.テーブルAに存在する社員コードにマッチするレコードはそのまま残す(Bのデータは無視) 2.テーブルAに存在せず、Bに存在するものをAに追加する ということです。 クエリを使って色々試しましたが、どうしてもテーブルAに存在するものもアップデートしてしまい、困っています。 どなたかご教授願えれば幸いです。 よろしくお願いいたします。

  • Access2003でデータを指定してフォームを開く時のVBAを教えてください。

    Access2003で社員の情報管理用データベースを作成中です。 社員の入力済み基礎情報を参照するメインフォームと、新たに詳細情報を入力するためのサブフォームから成る"データ入力"フォームを作成し、メインとサブは"社員番号"でリンクさせました。 このフォームを開く時に、InputBoxに社員番号(アルファベットと数字が混ざった7文字)を入力して該当社員を呼び出すよう、以下のようにイベントプロシージャを記述したのですが、 社員番号を入れずに(あるいは存在しない社員番号や桁数を入力して)[OK]をクリックしたとき、もしくは[キャンセル]をクリックしたときにも白紙のフォームが開いてしまいます。 Private Sub Form_Open(Cancel As Integer) Dim stName As String stName = InputBox("社員番号を入力してください。", "社員番号入力", "半角英数7ケタで入力してください。") DoCmd.ApplyFilter, "社員番号='" & stName & "'" End Sub これを以下のような設定にしたいです。 1.[キャンセル]をクリックしたときにはフォームを開く動作がキャンセルされる 2.空欄、あるいはデータ上に存在しない社員番号を入力した状態で[OK]を押したときにはフォームを開かず、正しい社員番号の入力を促す警告メッセージが表示される 記述の仕方を教えていただきたいです。 どうぞよろしくお願いいたします。

  • Access→エクセルへ転送 VLOOKUP?

    お世話になります。 概要 Accessで入力した値をエクセルへ転送させたいのですが A.xls 社員名|社員番号|記事|販売数値| 太郎 |00120142|  |140 | 花子 |12333457|  |    | 山田 |0123443 | | | エクセル側では販売数値はランダムに入力されています B.mdb 社員番号|販売数値| 12333457|200 | 0123443 |10   | Access側では社員番号及び販売数を入力します 入力フォーム内で社員番号を入力するときにエクセル側と社員番号が一致しない 又は、重複していればエラーで返し再入力ヒットすれば販売数に値を入れます。 *重複とはエクセル内に同じ社員番号が存在する場合 追記 Access側で社員番号を入力したときエクセル側の販売数値に値があればエラーでかえしたい 入力が終わると実行ボタンで 開かずにエクセルに販売数値を入力させたい A.xls(結果) 社員名|社員番号|記事|販売数値| 太郎 |00120142|  |140 | 花子 |12333457|  |200   | 山田 |0123443 | |100 | エクセル側はブックの共有をしており数名が開いている場合があります 複雑ですがわか方お願い致します。

専門家に質問してみよう