• ベストアンサー

テーブルの上書き保存は

テーブルに連結されていないフォームがあり保存処理をかけていったんテーブルに保存します。 ココまではできました。 次にそのフォームから保存したテーブルを呼び出してフォームに表示させ、データを追加して同じテーブルの同じレコードを上書き保存させるにはどのようにすればいいですか? 初心者なので解説つけてアドバイスお願いします。

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

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

こんにちは >dim rst as new adodb.recordset >set rst = new adodb.recordset って記述は 本来は必要です 行数を減らすため、省略していました あえて書かなくても、あなたがNo1の回答に対する補足に 記述されているので、すでに理解されているものと思っていました。 失礼しました。

Hugh
質問者

お礼

長々とアドバイスいただき大変感謝しております。 これからももっと勉強してアドバイスできる立場になれるよう精進します。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

回答No.5

こんにちは sqlstring = sqlstring & "where 座席コード ='" & 座席コード & "'" sqlstring = sqlstring & "返却 = '1';" のsqlstring & "返却 = '1';"のところでスペースが抜けてますね "返却 →" 返却 としてください。 ここからは、忠告です。 ぼちぼち、ご自身でデバッグする知識を身につけた方がよろしいかと 存じます(^^;;) 人から教えてもらったソースを理解しないで動かすと 後から変更が発生したとき、大変ですよ ヘルプを調べたり、SQL文をイミディエイトに貼りつけてデバッグ それをクエリのSQLに貼り付けて、試してみたりと なかなか、しんどいですが、頑張ってください。 では

Hugh
質問者

補足

おっしゃるとおりです。 あせってしまっていてつい、、 ところで最後にひとつだけおしえてください。 rst.open sqlstring, _ ----- とありますが、sqlのばあいは 最初に dim rst as new adodb.recordset set rst = new adodb.recordset って記述は 必要ないですか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

こんにちは 失礼しました。ご指摘の通り & が抜けております SQLSTRING = SQLSTRING & " where 座席コード ='" & Me.座席コード & "'" SQLSTRING = SQLSTRING & " Set 終了時間 ='" & rst![終了時間] & "'," SQLSTRING = SQLSTRING & " Where 座席コード ='" & Me.座席コード & "'" 全て、行後部の "'" または"',"で囲んだ文字列の前の & が抜けてます 失礼しました

Hugh
質問者

補足

すいません 今度はオブジェクトがありませんのエラーが出でしまいました場所は下記の rst.open sqlstring,_ currentproject.connecction,adopenstatic,adlockreadonly のところです。 何でしょう???? Dim sqlstring As String sqlstring = "select * from sogo " sqlstring = sqlstring & "where 座席コード ='" & 座席コード & "'" sqlstring = sqlstring & "返却 = '1';" rst.Open sqlstring, _ CurrentProject.Connection, adOpenStatic, adLockReadOnly If rst.EOF = True Or rst.BOF = True Then 'エラー処理 Beep MsgBox ("まだ返却されていません") End If

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

こんにちは 手順としては 1.キー入力 2.合致したレコードを読んで 3.画面に表示 4.終了時間入力 5.更新=UPDATE ですよね レコード読みこみの条件は キーが[座席コード] 条件は[返却]が1のものでよろしいかと思います sub データリード画面表示() dim SQLSTRING as string SQLSTRING = "select * form 総合 " '座席コード・返却は文字型とみなしています SQLSTRING = SQLSTRING & " where 座席コード ='" & Me.座席コード "'" SQLSTRING = SQLSTRING & " and 返却 ='1';" '注ただこれだと入力もれの場合複数レコードが合致するので '日付と受付時間の最大という条件もあったほうがいいかも? rst.Open SQLSTRING, _ CurrentProject.Connection, adOpenStatic, adLockReadOnly If rst.eof = true or rst.bof = true then 'エラー処理 endif '画面表示 Me.Date= rst![日付] Me.学生番号 = rst![学生番号] Me.氏名=rst![氏名]   ・   ・   ・ rst.Close Set rst = Nothing End Sub これで画面表示ができたので終了時間を入力します 更新ボタンを設け、ボタンが押された処理で sub 更新() dim SQLSTRING as string SQLSTRING = "UPDATE 総合 " SQLSTRING = SQLSTRING & " Set 終了時間 ='" & rst![終了時間] "'," SQLSTRING = SQLSTRING & " Set 返却 ='2'" SQLSTRING = SQLSTRING & " Where 座席コード ='" & Me.座席コード "'" SQLSTRING = SQLSTRING & " and 返却 ='1';" rst.Open SQLSTRING, _ CurrentProject.Connection, adOpenKeyset, adLockOptimistic rst.Close Set rst = Nothing End Sub では

Hugh
質問者

補足

早速ありがとうございました しかし下記の構文がエラーになってしまいます なぜでしょう? & のあとは " っていらないんですか? たとえば sqlstring =sqlstring & "where 座席コード ='" & me.座席コード"'" のところとかですが、、、 sub データリード画面表示() SQLSTRING = SQLSTRING & " where 座席コード ='" & Me.座席コード "'" sub 更新() SQLSTRING = SQLSTRING & " Set 終了時間 ='" & rst![終了時間] "'," SQLSTRING = SQLSTRING & " Where 座席コード ='" & Me.座席コード "'"

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

こんにちは 一般的なテーブルメンテナンスの処理には 1.新規登録 2.更新登録 3.削除 があります。 これを一つのフォームで行う場合 今からどれをするよと初めに確定させてから処理するか キー項目を入力させ、データがあれば更新・削除モード なければ新規登録モードとさせる、2通りがあります。 まずは、最初に確定させる方法がわかりやすいかと思います。 フォームの上にコマンドボタンを新規と更新・削除の二つ用意して 処理を分岐させれば、いかがでしょうか では

全文を見る
すると、全ての回答が全文表示されます。
  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.1

フォームの開く時のイベントで表示させたいレコードをクエリやSQLで抽出し、各項目をコントロールにセットします。 保存時は更新処理となります。 新規に追加する処理がVBAを使用していてSQLを使用していて、SQLでinsertステートメントで行っているのでしたら同じようにupdateステートメントにwhere句でレコードを指定し更新処理が掛けられます。 もし、addnewメソッド等でそのレコードに対して追加しているようでしたら、更新したいレコードに対するレコードセットを作成しそのレコードに対してeditメソッドを使用し、updateメソッドで更新を掛けられます。 また元々追加クエリで追加しているようでしたら、更新クエリを作成しクエリの抽出条件をフォーム上に有るキー項目として、値をビルドで各フォームの値にしてあげれば出来ると思います。 ざっと考えてこの3種類が有ります。

Hugh
質問者

補足

アドバイスありがとうございました。 保存用の総合テーブルがあり、最初に保存した時に返却フィールドに”1”を入力して保存しています。 2度目に座席コードを入力用テキストボックスに入力した時に返却フィールドの”1”の場合の座席コードが一致したレコードの終了時間フィールドに時間をいれて2回目の保存の時に返却フィールドを”2”に書き換えて保存したいのですが、どのようなコードになるかサンプルだけでも教えていただけないでしょうか?今のコードは下記のとおりです。 Public Sub 保存処理2() Dim rst As New ADODB.Recordset Set rst = New ADODB.Recordset rst.Open "総合", _ CurrentProject.Connection, adOpenKeyset, adLockOptimistic rst.AddNew rst![日付] = Date rst![学生番号] = Me.学生番号 rst![氏名] = Me.氏名 rst![受付時間] = Me.受付時間 rst![終了時間] = Me.終了時間 rst![座席コード] = Me.座席コード rst![座席番号] = Me.座席番号 rst![性別] = Me.性別 rst![履修] = Me.r.Value rst![ホームページ] = Me.h.Value rst![電子メール] = Me.m.Value rst![レポート作成] = Me.re.Value rst![就職利用] = Me.j.Value rst![その他] = Me.o.Value rst![mo] = Me.mo.Value rst![プリンター] = Me.pri.Value rst![スキャナ] = Me.scan.Value rst![zip] = Me.zip.Value rst![返却] = "1" rst.Update rst.Close Set rst = Nothing Me.入力用テキストボックス = "" Me.学生番号 = "" Me.受付時間 = "" Me.氏名 = "" Me.座席コード = "" Me.座席番号 = "" Me.性別 = "" Me.終了時間 = "" Me.r.Value = False Me.h.Value = False Me.m.Value = False Me.re.Value = False Me.j.Value = False Me.o.Value = False Me.mo.Value = False Me.scan.Value = False Me.pri.Value = False Me.zip.Value = False 入力用テキストボックス.SetFocus End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォームからテーブルへの保存

    Access2000を使っていますが、初心者です。 まず、フォームを作成し、コンボボックスでテーブル1からデータを取ってきて表示させています。そのコンボボックスに表示させているデータをテーブル2に保存したいのです。 コントロールソースで指定するとコンボボックスからテーブル1のデータを選択できません。これは何がおかしいのでしょうか。そもそもテーブル1のデータをフォームからテーブル2に保存するということはできないのでしょうか。保存させる方法がありましたら教えて頂けませんでしょうか。 困っております。できれば分かり易く教えて頂けないでしょうか。

  • Access2010で・・・

    Access初心者です。 社内でデータベースを作ることになり、分からないながらもやっていて、いざデータの入力をしようとすると問題が起きてしまいました。 クエリやフォームでデータを入力しレコードを追加して、上書き保存し画面を閉じて、また開くとクエリやフォームにレコードが追加されていないんです。 テーブルには、ちゃんと追加されています。 この原因は何でしょうか? お教えください。

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

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

  • Access2007:フォームからに誤って上書きして元のデータが消えてしまった

    Access2007でフォームから誤って3件のデータを上書きしてしまいました。テーブルのデータが変更されてしまって、元にあったデータがなんて書いてあったのかわからなくなりました。アクセスでは、レコードを移動するたびに自動保存されるので、間違って上書きしたデータが保存されてしまい、元のデータがわからなくなりました。"戻る"ボタンで戻っても、レコードを上書きした後の状態までしか戻せませんでした。このような時、どうすれば元のデータがわかりますか?

  • 上書き保存しないでデータを保存したい。

    外付けHDDに大切なデータを保存しているのですが、 新たにいくつかのファイルを追加したそのデータを再度保存しようとすると、 「フォルダに含まれるファイルが同じ名前の場合、新しいファイルで上書きされます。」と表示されます。 上書きされると、一部ファイルに何らかの破損があった場合、正常なデータが破損データに書き換わってしまうことを心配しております。 何とか追加ファイルのみを加える形でデータ保存する方法はないでしょうか? よろしくお願い致します。

  • Accessのクエリでレコード追加

    Access初心者です。 バージョンは2010をつかっています。 テーブルを14テーブル含み、フィールド数が100ほどある選択クエリを作りました。 抽出条件などは設定していません。 このクエリで新しくデータを入力、レコードを追加し、上書き保存した後クエリを閉じます。 それからまた、そのクエリを開くとレコードが追加されていません。 テーブルにはその入力したデータは追加されています。 このクエリにもそのデータを追加表示させるためにはどうすればいいですか? 表示されない原因はなんなのかお教えお願いします。

  • access2000でデータの変更の内容がわかるようにしたいのですが。

    ACCESS初心者です。 ACCESS2000でフォームで既存レコードのどこかを更新したら、 (1)変更する前のデータをテーブル?で保存していきたい。(変更されたデータの過去分のデータをどんどん残していく。上書きはしない)&表示できれば尚うれしい。 (2)データを更新した日時も(1)と同じテーブルに書き込みたい。(こちらも(1)同様表示できれば尚うれしい)のです。 この作業はアクセスでできる?!と思っているのですが、 どなたかご教授頂ける方、よろしくお願いします。

  • アクセス2003のテーブルとフォームの関係

    私はアクセス初心者です。 簡単なテーブルをまず作成しました (主キー、オートナンバーなどは設定していません) そのテーブルを保存し、次にフォームを作成してデータ入力しました。 そのデータを保存して、次にテーブルを開くとフォームで入力した 順番には入らずに、バラバラにテーブルに入力されています。 アクセスとはこういうものなのでしょうか? それと、これはどういう順番で並んでいるのでしょうか? なにぶん初心者なものでよろしくお願いいたします。

  • テーブルにデータを保存するフォームの考え方

    Access2000で勉強中ですが、フォーム上にID 商品名 単価 のテキストボックスを作成しました。 その下に、保存されたデータを表示されるようにサブフォームを作っています。そして 新規保存・修正・削除ボタンを1つの入力フォーム上に作成して処理できるものを作ろうと考えています。 サブフォームのレコードセレクタを指定して修正ボタンを 押すとテキストボックスに内容が表示されて修正できるようにするにはどうすればよいでしょうか? 説明が下手なのですが、簡単に言うと サブフォーム上ではレコードの選択(レコードセレクタ)の指定だけで入力をさせないようにしたいのです。 VBAのレコードセレクタの取得が良く判らないので よろしくお願い致します。

  • Accessのインポートについて(上書きと追加)

    Access2000を使用しています。 インポートについて教えて下さい。 あるテーブルにExcelデータをインポートしています。 「あるテーブル」の設定としましては主キーを設定して いて重複なしにしています。 実現したいこととしましては、Excelデータ上にAccessデータ(すでにあるデータ(主キー))があれば上書き保存して、なければ追加したいのです。 Access側        | Excel側 主キー フィールド1  |  列1  列2    A     ○      |   B   ○ B     ×      |   D   × C     ○      |   E   ×   つまり上記の表でAccess側Bデータのフィールド1の「×」 をExcelデータをインポートすることにより「○」に 変更(上書き保存)したいのです。 そして、Excel側D・EデータはAccessに新規レコードと して追加したいのです。 よい方法はないでしょうか? なお、私の知っている知識としましては、 インポートするとデータは上書き保存されずに 追加されてしまうということは知っているのですが。 以上、よろしくお願い致します。

このQ&Aのポイント
  • EPSONのEP-713Aの複合機でスキャナーを使用したいのですが、Epson San Smartから接続しても利用可能なスキャナーが表示されません。
  • スキャナーを探索をクリックしても、何も見つからず接続ができません。
  • どうしたらスキャナーが使えるようになるのでしょうか。
回答を見る

専門家に質問してみよう