Access2000 WindowsXPを使っています。
テーブルAのフィールドには12345と5ケタで入っているものがあって、
テーブルBは同じ番号ですが、123450と末尾に0がつき6ケタで表されているので、
桁を合わせたいと思っています。

末尾に0をつける方法を教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>末尾に0をつける方法を教えてください。



Access2000の環境がありませんので確認はできませんが、考え方として更新クエリ を作成して
実行することでできると思います。
http://www.seta.media.ryukoku.ac.jp/manual/offic …
に更新クエリの作成手順がありました。
レコードの更新の部分は [フィールド名] & "0" とかになると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
早速会社で試してみたところうまく行きました!
次回もまた教えてください。

お礼日時:2011/04/25 18:52

クエリ(オブジェクト)を選び


新規作成
デザインビュー
OK
デザイングリッドが出るが、そのままさわらずで
表示
SQLビュー
そこの画面に
UPDATE 社員4 SET 地区 = 地区 & "0";
を入れて実行(!マークをクリック)
SQL分の意味は、社員4テーブルの「地区」フィーッルドの後部に0をくっつけます。
VBAでレコード処理する方法も含め、数種のやり方があると思うが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
当方ド素人でSQL文は書いたことがなかったので、とても勉強になりました。
また教えてください。

お礼日時:2011/04/25 18:56

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESSでの桁数のあわせ方

EXCELで
(1)ERPソフトからの抽出データと
(2)手入力で管理しているデータ
をACCESSで取り込んで、加工をします。

それぞれ入力方法が
(1)のERPからのデータは必ず10桁(0000012345とか0000000123)で
(2)は有効分(12345とか123)
となっていますのでACCESSへ、インポートする際に
桁数が異なってしまい、クエリーで結び付けられません。

そこで、(2)のデータを(1)のように必ず10桁にして
桁数あわせに0が入るといった方法、つまり12345なら0000012345、123なら0000000123と変換させる
方法はありませんでしょうか。
出来れば、(2)をACESSで取り込んでからACCESSで処理をしたいです。

Aベストアンサー

format関数を使用してクエリーで変換するのがよいかと思います。
変換したいフィールドを「顧客コード」とします。
更新クエリーでフィールドに「顧客コード」、
レコードの更新に「=format([顧客コード],"0000000000")」と入れます。
「!」実行ボタンで完了です。

10桁のものはそのまま、10桁以下のデータの頭にゼロが付く形となります。
その代わり、この式のままではブランクの場合も10桁のゼロで埋まってしまいます。

QAccessのクエリで、Left関数を使用して、7桁の数値を抜き出す方

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。
IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。
いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。
元のテーブルに入力されているIDを変更することなく、
クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。
宜しくお願い致します。

Aベストアンサー

>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。

関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます
単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します

全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです

先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

Q【急】Access 4桁の数字の頭に0をつけて5桁にしたい

4桁の数字が入っているフィールドで、頭に0をつけたいです。
一括で簡単にできる方法を、至急教えて下さい!

Aベストアンサー

sanbitです。
クエリでしたらできますか?更新クエリで案内します。
(1)該当テーブルで選択クエリを作成ください。
(2)このクエリをデザインモードで開く→クエリ画面で右クリックするとプルダウンメニューがでます。
→一番上のSQLビューをクリック→何やら表示しています。これを消して

UPDATE テーブル名 SET テーブル名.フィールド名 = "0"+[フィールド名]
WHERE Len([フィールド名])=4;

2行をコピーしてください、
テーブル名とフィールド名3箇所(同じ名前になります)を変更してください。
スペースドット 大小のカッコ など間違うと大変です。
(3)クエリは一旦閉じてダブルクリックで実行します。
クエリは画面上で右クリックで、表示モードが変えられます。
なお、念のため元のテーブルはコピーを取ってから実行ください。
データは更新してしまいます。間違っていたら元に戻せません

なお、前回のフォーム閉じてフォームをクリックすれば実行モードになります、ボタンをクリックすればイベントに書いた内容を実行してくれます。
フォームはデータを表示させたり、ボタンでいろんな処理をするのにしようします。

sanbitです。
クエリでしたらできますか?更新クエリで案内します。
(1)該当テーブルで選択クエリを作成ください。
(2)このクエリをデザインモードで開く→クエリ画面で右クリックするとプルダウンメニューがでます。
→一番上のSQLビューをクリック→何やら表示しています。これを消して

UPDATE テーブル名 SET テーブル名.フィールド名 = "0"+[フィールド名]
WHERE Len([フィールド名])=4;

2行をコピーしてください、
テーブル名とフィールド名3箇所(同じ名前になります)を変更してください。
ス...続きを読む

QOfficeアクセス テーブル「テキスト型」⇒「日付型」への変換について

テーブルにデータが保管されており、そのフィールドの一つに「テキスト型」で”20080301”のようなデータを持っています。これを「日付/時刻型」”2008/03/01”のように変換したいのですが、どのようにすればよいのでしょうか。

※ちなみにこのオリジナルデータは毎日、自動的にテーブルにダウンロードされており、このテーブル自体の型を予め「日付/時刻型」に変換すると、日々のデータ取得時にエラーとなってしまいます。ですので、「日付/時刻型」のフィールドを持った新規のテーブルに、この”20080301”のデータを変換し格納したいのですがどのようにすればよろしいでしょうか。

テーブル⇒デザインより、該当のフィールドの型を「テキスト型」⇒「日付/時刻型」へ直接変換してしまうと、「データの変換中にエラーが発生しました。○○件のレコードのデータが失われました。」と表示されます。素人のため、なるべく追加クエリや更新クエリや簡単な関数のみでの方法を教えていただけたら幸いです。

Aベストアンサー

テーブルに日付時刻型フィールドを追加して、
更新クエリを使って、#1さんが提案されている
数式を使えばよいのでは?

QACCESSのクエリー抽出条件にIIFを使用して

コンボボックスの値を抽出条件にしたクエリーを作成しています。
コンボボックスにて"ALL"を選択したときに、全レコードを表示したく、
以下の式を入れたのですが全表示がされません。

IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])

Like "*" の部分がいけないのでしょうか?
(偽の場合は選択した値のレコードが抽出されます)

どなたか教えてください、よろしくお願いいたします。

Aベストアンサー

>IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])
この条件は、抽出したいフィールドの「抽出条件」の所に入力しているんですよね?

ちょっと内容を変えまして・・・
(1)「抽出条件」ではなく、「フィールド」の行に入力してください。
 (つまり、抽出用の新しいフィールドを作成するということです。)
(2)式は
式1: IIf([Forms]![テーブル名]![コンボボックス名]="ALL",True,[テーブル名]![コンボボックス名]=[Forms]![テーブル名]![コンボボックス名])
にしてください。
(3)IIfを入力したフィールドの「抽出条件」に True と入力します。
 (Trueの囲い文字はいりません。)

どうでしょう?ちゃんと出ますよね・・・?
ただし、フィールドを作ったわけですから、
クエリのデータシートビューには必要のない、-1などが表示されたフィールドが表示されますよね。
これは、デザインビューに戻って、表示のチェックボックスをオフにすれば解決します。

IIFというのは、ExcelのIF関数とはちょっとイメージが違います。
以下解説↓

今回の条件式の部分には、[コンボ]="ALL"という評価式(←ポイント!)が入力されています。
Excelでは条件式というイメージが強いですが、
IIFは評価式という意味です。
つまり、この評価式自体がTrueとFalseを持つということです。
IIf([Forms]![テーブル名]![コンボボックス名]="ALL",・・・・)という式で、
条件をALLとしたら・・・
評価結果=True となります。
そして真の場合の処理にTrueを指定することで、IIFの戻り値がTrueになります。
条件にALL以外を入力すると・・・
評価結果=False となります。
そして偽の場合の処理の戻り値が、ALL以外の条件になります。
抽出条件にもTrueを入力したのは、無条件に全件が表示されるのを防ぐためです。

これは、表示をオンにして動作確認すると分かりやすいかも知れませんね。
または、とりあえず現象を直して、理解は後々・・・でもよいかも知れません。
健闘を祈ります!

>IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])
この条件は、抽出したいフィールドの「抽出条件」の所に入力しているんですよね?

ちょっと内容を変えまして・・・
(1)「抽出条件」ではなく、「フィールド」の行に入力してください。
 (つまり、抽出用の新しいフィールドを作成するということです。)
(2)式は
式1: IIf([Forms]![テーブル名]![コンボボックス名]="ALL",True,[テーブル名]![コンボボックス名]=[Forms]![テーブル名]![コンボボックス名])
にして...続きを読む

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

Qaccess の 最終レコードの判定はどう記述しますか

月間スケジュールテーブルを新規生成するルーチンです
月初~月末まで各日にちの曜日を[曜日TMP]に求めてこのルーチンに入ります
("マスタFORM"には週間計画のテーブルのフィールドを設定したフォームです。
(週間計画:月曜日の○○時~◎◎時に○○の作業)
Private Sub 分析RTN()
DoCmd.GoToRecord acForm, "マスタFORM", acFirst
Do While Not EOF(1) ‘ここでエラーが発生します
If 曜日No. = 曜日TMP Then
追加RTN ’レコードの追加ルーチンです
End If
DoCmd.GoToRecord acDataForm, "マスタFORM", acNext
Loop
End Sub
他にお気づきの点はご指導ください

Aベストアンサー

こんにちは。

これかな~
DoCmd.GoToRecord acForm, "マスタFORM", acFirst
'Do While Not EOF(1) 'ここでエラーが発生します
Do While マスタFORM.NewRecord = False
  If 曜日No. = 曜日TMP Then
    '追加RTN 'レコードの追加ルーチンです
  End If
  DoCmd.GoToRecord acDataForm, "マスタFORM", acNext
Loop

QACCESS 重複データを1つだけ表示したい(初心者です)

ACCESSで複数のフィールドに全く同じレコードが複数存在します
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
愛知      田中      12
愛知      田中      12
三重      山本      23
三重      山本      23
岐阜      鈴木      33
岐阜      鈴木      33

もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
三重      山本      23
岐阜      鈴木      33

どのようにすればよいでしょうか。

Aベストアンサー

クエリにて[固有のレコード]プロパティーを[はい]にします


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報