access超超初心者です。
フォームのコマンドボタンをクリックすると
テーブルのレコードを追加または削除する方法を教えてください。
[イベントプロシージャ]を使用して、どのようなプログラムを書けば
いいのでしょうか?
ど素人の質問ですいません。

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

A 回答 (5件)

・レコードの追加なんですけれど、複数のフィールドにはどのように入れるのでしょうか?



INSERT INTO テーブル名(フィールド名1,・・・) VALUES (値,・・・)のように書きます。(詳しくはHELPを参照して下さい。)
(フィールド名1,・・・)の部分は省略できます。
別のテーブルから値を取得する方法もあります。

・また、シングルクォーテーションの意味は??

文字列を設定する場合は、シングルクォーテーションまたはダブルクォーテーションでくくる必要があります。

・レコードの削除の際に複数の条件を入れたいです。
これもHELPを参照して下さい。

DELETE FROM テーブル名 WHERE 条件式
で実現できると思います。

<やりたいこと>
フォームで会社名と支店名をリストボックスから選択して、テーブルのフィールド1の会社名かつフィールド2の支店名のものをレコードを削除したい。
教えてください。

DELETE FROM テーブル
WHERE フィールド1 = '会社名' AND フィールド2 = '支店名'
で、いけると思います。

まあ、何でもいろいろやってみて身に付けてください。

この回答への補足

有難うございます。やってみたけれど、DoCmd.RunSQL でパラメータの入力のダイアログが表示されてしまいます。(削除、追加ともに)
ダイアログに再度入力すると、きちんと削除されます。
何がいけないのでしょうか?

Private Sub 削除_Click()
Dim Frm1 As Form
Dim In1 As Integer, In2 As String

Set Frm1 = Forms!支店管理F
In1 = Nz(Frm1!顧客選択)
In2 = Nz(Frm1!支店リスト.Column(1))

If In1 = 0 Then
MsgBox ("顧客を選択してください。")
ElseIf In2 = "" Then
MsgBox ("削除支店を選択してください。")
Else
' レコードを削除する
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM 支店ルータ管理T WHERE (顧客ID = " & In1 & " AND 支店名 = " & In2 & ");"
DoCmd.SetWarnings True

'支店リスト 最新の情報に更新
MsgBox (Frm1!顧客選択.Column(1) & "様 " & In2 & " を削除しました。")
Me!支店リスト.Requery
Me!支店入力 = ""
End If
End Sub

何度もすいません。教えてください。

補足日時:2001/04/23 11:06
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました。ついに完成しました。
非常に助かりました。

お礼日時:2001/04/27 17:24

soraprioさんが、tom777さんの回答に対し、


補足記入されていたモジュールの、
「レコードを削除する」
の部分を訂正してみました。

DoCmd.RunSQL "DELETE * FROM 支店ルータ管理T WHERE (顧客ID= " & In1 & " AND 支店名= '" & In2 & "');"

これで、動くと思いますよ。

顧客IDは数値型、支店名は文字列型ですよね?
    • good
    • 0
この回答へのお礼

ありがとうございます。完成しました。

お礼日時:2001/04/27 17:21

[イベントプロシージャ]でSQL文を使用してレコードを追加



Dim sSql As String

sSql = "INSERT INTO テーブル1 VALUES('値')"

DoCmd.SetWarnings False
DoCmd.RunSQL sSql
DoCmd.SetWarnings True

[イベントプロシージャ]でSQL文を使用してレコードを削除

Dim sSql As String

sSql = "DELETE FROM テーブル1"

DoCmd.SetWarnings False
DoCmd.RunSQL sSql
DoCmd.SetWarnings True

他にもいろいろ方法はありますが、参考にして下さい。
    • good
    • 0
この回答へのお礼

有難うございます。
・レコードの追加なんですけれど、複数のフィールドにはどのように入れるのでしょうか?また、シングルクォーテーションの意味は??
・レコードの削除の際に複数の条件を入れたいです。
<やりたいこと>
フォームで会社名と支店名をリストボックスから選択して、テーブルのフィールド1の会社名かつフィールド2の支店名のものをレコードを削除したい。
教えてください。

お礼日時:2001/04/20 12:42

レコードを追加または削除であれば、


「マクロ」の方が早いし、わかりやすいですよ。
マクロなら、一覧から操作内容を選択できますし、、、

どうしても「イベントプロシージャ」がよければ
「レコードを追加または削除」の「マクロ」を
作成し、これを「イベントプロシージャ」へ変換する
方が「確実」です。

ただし、Accessのバージョンまたは、インストール
状態によっては「マクロ→イベントプロシージャ」
への変換機能は付いていない場合があります。
    • good
    • 0
この回答へのお礼

マクロですか、これもまたやったことありませんので試してみます。
いろいろ方法があるのですね。どれが一番いいのだろう???
有難うございます。

お礼日時:2001/04/20 12:31

私もアクセスはよく使うんですけど、VBの知識がないので、モジュールやイベントプロシージャは最小限にしてます。


レコードの更新、追加、削除などはクエリーを使ってます。
もし機会があったら試してみてください。
それほど難しくはないですし、何かと便利です。
    • good
    • 0
この回答へのお礼

クエリーですか。やったことないので試してみます。
有難うございます。

お礼日時:2001/04/20 12:29

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

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

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

関連するカテゴリからQ&Aを探す

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

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

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

Q[Access]異なるレコード間の文字列連結

いつもお世話になっております。
早速ですがAccess(初心者です)での質問です。

以下のようなテーブルがあります。

ID|番号(1)|番号(2)|実績
1 |113355 |AA| 152
2 |112211 |VV| 27
3 |112222 |VV| 90
4 |113355 |CX| 8
5 |112222 |SD| 110
………………・・・(以下略)

番号(1)が同じなら、番号(2)を"/"で区切り、連結して
別のテーブルを作成しようとしています。

ID|番号(1)|番号(2)
1 |113355 |AA/CX
2 |112211 |VV
3 |112222 |VV/SD
………………・・・
が、なかなか良い方法が思いつきません。
皆様のお力を貸してください。どうぞ宜しくお願いいたします。

Aベストアンサー

VBAを使って、レコードを1件ずつ読み込んで書き込むというやり方が良いんじゃないかと思います。

考え方としては、

元のテーブルで番号(1)を基準に並べ替えをする
元のテーブルの最初のレコードから順に番号(1)の値を比較しながら番号(2)を書き込んでいくようにする

手作業でやるとしたら、

元のテーブルをそのままコピーする
番号(1)で並べ替えをする
レコードを見ながら番号(2)を書き換える
番号(2)が書き終わったら番号(1)のダブっているレコードを削除する

Qフォーム等入力時においてIMEが働かない(?)

よく起こる現象で、インターネットでフォーム入力や、Yahooとかの検索入力で日本語入力をしたいときに、IMEが働かない現象が起きています。半角英数のみ入力ができます。私の環境だけでしょうか‥。
キーボードの「半角/全角」キーが効かないので、IMEツールバーを出して、マウスで日本語入力の「あ」にしても入力画面では半角英数に戻ったりします。
Wordやメモ帳を起動すると、正常に働くので、メモ帳を立ち上げてそこへ入力して、コピーしてペーストをしたりして対処をしています・・。
常にメモ帳を立ち上げておけば解決とかの意味ではありません。
IEをアクティブウィンドウにした場合、IMEが働くなくのです。

Aベストアンサー

確かIEのバグだったと思います。

対処法のリンクを貼っておきますので、参考にしてください。
http://www.tku.ac.jp/~densan/local/ie7-ime/ie7-ime.html

QAccessのフォームから削除したレコードをテーブルに保存したい

Accessを利用してフォームからデータを入力しているのですが、クエリを使わずフォーム画面から不必要なレコードをコマンドボタンで削除しています。削除したレコードをテーブルに保存したいのですが、追加クエリで条件を決めずにフォームの画面から判断したレコードだけを削除し、かつ削除したレコードを削除専用のテーブルに追加する方法を教えてください。よろしくお願いします。

Aベストアンサー

最初にそのテーブルのコピーを作っておきます。
一連の削除作業が終わった後に、コピーから元テーブルに残っているレコードと同一レコードをクエリーで削除すれば、コピーは元テーブルから削除されたもののテーブルになります。

QWebフォームのIMEモードを入力項目毎に自動切替

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにアプリケーション側で制御されるものが大半だと思っておりました。それを聞いてある人は「そんなことはない、世の中の大半のアプリはそんなことを制御していない、「普通」は自分でIMEで制御しながら入力するものだ」、と言っていたので議論になりました。これからウェブサイトを作ろうと思っているので、最終的にはこの議論はアプリ側にそのような実装をするかどうかというところに帰着するのですが、まずは「一般的にどうなのか」というところでご意見を頂きたいと思います。ちなみに、日本のメジャーなサイト(航空会社、ポータル、携帯電話、電気屋)10個でユーザ登録フォームを確認したところ、名前欄をクリックしてもいずれもIMEのモードはひらがなに変更されませんでした。そこで今は友人が正しくて、僕が間違っていたどころか、「そもそも、名前入力時に自動的にひらがなにモード変換されるようなサイトって本当にあるのだろうか。。」というような状態になっております。どなたか、教えてください。よろしくお願いします。

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにア...続きを読む

Aベストアンサー

IMEのON/OFFができるスタイルシート「ime-mode」は、Internet Explorerが独自に追加した仕様で、Internet Explorerでは入力モードが切り替わりますが、その他のブラウザでは保証されません。
http://www.htmq.com/style/ime-mode.shtml

今、確認したところ、IE8はもちろん切り替わり、Firefox 3.6も切り替わりましたが、Google Chromeは切り替わりませんでした。
Opera,Safari,Sleipnir…等は試してません。

大手のサイトでは「より多くのブラウザで表示できること」が求められますので、独自仕様の「ime-mode」を使っているところは少ないのではないでしょうか。
逆に「Internet Explorerしか表示できなくて良い」と割り切ってるサイトや、社内だけに公開するようなページは「ime-mode」が使われていると思います。

QAccessフォーム全レコードをPDFで個別保存

使用MS Access 2010

以前から何度かここでお世話になっております。よろしくお願いします。

「受注一覧」という表形式フォームに日々の受注客百件程度が表示されています。レコードのフィールドに[ID]という受注IDコードがあります。
受注確認のメールにPDFの添付ファイルを作成するための「受注確認PDF」というレポートがあり、
それを使って"受注確認書(受注ID:" & [ID] & ")"というファイル名で"C:\PDF"フォルダーに一件(1ページ)づつ保存するボタンを作成する必要に迫られておりますが、ネットでいろいろ調べて、もう少しというところでなかなうまくいきません。

「受注一覧」フォーム上のボタンに レポートを開くマクロの実行(2000回)-次のレコード としたマクロを登録し、「受注確認PDF」レポートの”開くとき”イベントに

Private Sub Report_Open(Cancel As Integer)
DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF"
Reports!受注確認PDF.Caption = "受注確認書(受注ID:" & [ID] & ")"

と書きました。
マクロは上から順にPDFは開いているようなのですが、フォルダーにはPDFが一枚も保存されません。
どうも開いているだけで保存されないようです。
またマクロも最後のレコードになったときのアクションを書いていないため、「次のレコードがありません」というエラーメッセージで終わります。

フォーム上の全件を"受注確認書(受注ID:" & [ID] & ")"という名前で"C:\PDF"に別々にPDFで保存し、最後のレコードになったら完了するVBAを完成したいのですが、どなたか助けていただける方がいたらお願いいたします。当方、VBAは見よう見まねで書いているだけで意味はあまり理解できないレベルです。

使用MS Access 2010

以前から何度かここでお世話になっております。よろしくお願いします。

「受注一覧」という表形式フォームに日々の受注客百件程度が表示されています。レコードのフィールドに[ID]という受注IDコードがあります。
受注確認のメールにPDFの添付ファイルを作成するための「受注確認PDF」というレポートがあり、
それを使って"受注確認書(受注ID:" & [ID] & ")"というファイル名で"C:\PDF"フォルダーに一件(1ページ)づつ保存するボタンを作成する必要に迫られておりますが、ネットでいろいろ...続きを読む

Aベストアンサー

間違いがいくつかあります。

DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF"

上記のコードで、出力ファイル名が指定されていない。
ちゃんと拡張子も含めてファイル名を指定する必用があります。
さらにファイル名には、: は使用できません。

レポートを開くときのイベントでOutputToを実行してますが、このイベントではOutputToは実行できません。フォーム上のボタンのイベントプロシージャで OutputTo を実行しましょう。

「一件(1ページ)づつ保存する」ということですが、具体的にはどのように1件だけ抽出しているのでしょうか。レポートのレコードソースをパラメータクエリにしているのでしょうか。それともレポートを開くアクションで Where条件式を設定しているのでしょうか。

パラメータクエリで、受注一覧フォームの受注IDを参照しているとして回答します。

また、マクロとイベントプロシージャを混在させるのは煩雑ですので、イベントプロシージャのみで記述します。

受注一覧フォーム上のコマンドボタン(コマンド1)のクリック時のイベントプロシージャ

Private Sub コマンド1_Click()
DoCmd.GoToRecord acActiveDataObject, , acFirst
Do
If Me.Recordset.RecordCount = Me.CurrentRecord Then
MsgBox "最終レコードまで出力しました。"
Exit Sub
End If
DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF\受注確認書(受注ID " & Me.顧客コード & ").pdf"
DoCmd.GoToRecord acActiveDataObject, , acNext
Loop
End Sub

間違いがいくつかあります。

DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF"

上記のコードで、出力ファイル名が指定されていない。
ちゃんと拡張子も含めてファイル名を指定する必用があります。
さらにファイル名には、: は使用できません。

レポートを開くときのイベントでOutputToを実行してますが、このイベントではOutputToは実行できません。フォーム上のボタンのイベントプロシージャで OutputTo を実行しましょう。

「一件(1ページ)づつ保存する」ということですが、具体的...続きを読む

QACCESS フォーム上 テキストボックスを移動するごとに文字の入力モードが戻ってしまう

ACCESSでフォーム上で入力をしています。
テキストボックスを移動するごとに半角英数になってしまい非常に不便です。

テーブルではIME入力モード:ひらがな、IME返還モード:一般としています。
テーブルのデザインビューの状態では指定している通りのひらがなで入力できるのが、フォームになると半角英数の状態です。
フォームのプロパティから何か設定を変更しなければいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

maigo-no-konekoさん
ACCESS2000では次の機能があります。
テーブルの項目定義のIMEの設定内容が引き継がれる仕様なのか
否か不明ですが、フォームの定義画面でテキスト項目やコンボボックス
など入力項目毎に指定します。
(ただし、シフトキーを押しながらマウスクリックすることで
複数選択できます)

1)テキストポックスのプロパティ画面を呼び出します。
2)その他 タブにIME関連の項目があります。
  IME入力モード保持 直前に入力した項目のIMEの入力設定
  状態を引き継ぐ場合は「はい」にします。直前の入力項目の
  設定によらない場合は「いいえ」にします。
  IME入力モード オンまたはひらがな等にします。
           ここでご希望の入力方法を選択します。
  IME変換モード 一般(人名や地名などを入力す場合は
  人名/地名)にします。

Q[Access2003]メイン・サブフォームの演算テキストボックス:『識別子』

メイン・サブフォームの演算テキストボックス:『識別子』についてよく分からないです。

「!」(識別子)の意味は、『ユーザー定義のオブジェクトやフィールドに付ける』とパソコン教室で教えてもらいました。
『オブジェクト』の言葉の意味が分からなかったので、マイクロソフトのホームページで調べてみました。『オブジェクト』の意味は多範囲でよく分からなかったです。
「!」(識別子)で使用する『オブジェクト』の言葉の意味を教えてもらえないでしょうか?Access初心者なので簡潔に教えてくださったら助かります。

Aベストアンサー

日本語はとても進んだ言語で「オブジェクト指向」なんです。
何故かと言うと、「画を見る」のように「目的語」(オブジェクト)を
先に言うからです。で、フォーム=画面があるとします。画面も1個
ではないから名前を付けますね。
Aという画面にはテキストボックス(X)とボタン(Y)があるとします。
ではボタン(Y)を指す時に何と言いますか?
「Aという画面の中にあるYというボタン」となるでしょう。
この「Aという画面」、「Yというボタン」がオブジェクトです。
そして、「の中にある」に相当する部分が「!」なんです。
実際にもForm_A!Button_Y みたいに記述します。
オブジェクトとは「物」です。画面と言うブツ、ボタンと言うブツ、
XXと言うブツ・・・ そんな漠然とした認識でいいのです。

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

QAccessのフォーム上にレコード数とレコード番号の表示

Accessでクエリを元に表示するフォーム上で、テキストボックス等に関数を使って、レコード数とレコード番号を表示する方法がありましたら教えてください。

フォームの書式設定で「移動ボタン」の表示をすれば目的の事は出来るのですが、表示の大きさが調整できない為、とても見難いのです。

以上よろしくお願いします。

Aベストアンサー

レコード番号のコントロールソースを
=[CurrentRecord]
レコード数のコントロールソースを
=Count("*")-[NewRecord]
としてみてください。


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

人気Q&Aランキング