フォームの修正ボタンをクリックするとデータが正しく転記されない問題について

このQ&Aのポイント
  • 初心者向けのアクセス方法を教えます
  • フォーム上のlist_Userと非連結フォームを修正する方法を教えます
  • データが正しく転記されるようにするための方法を教えます
回答を見る
  • ベストアンサー

アクセス初心者です。

一つのフォーム上に、一覧が参照できるlist_Userと非連結フォームがあります。list_Userフォームから、項目を選び、修正ボタンをクリックすると非連結フォームへ転記され、修正できるように作ったのですが、参照、更新、保守で〇、×を用いところ、非連結へ転記されるとき、〇×以外はきちんと転記されるのですが、〇の項目も×として入っていきます。どうすればそのままデータが入っていくのでしょうか? If (IsNull(Me.参照) Or Me.参照 = 0) And _ (IsNull(Me.更新) Or Me.更新 = 0) And _ (IsNull(Me.保守) Or Me.保守 = 0) Then MsgBox "参照・更新・保守が未設定です", vbCritical Me.参照.SetFocus Exit Sub End If 説明が分かりにくかったらすみません。宜しくお願い致します。

noname#49321
noname#49321

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

フォームじゃなくコンボボックスですか? フォームには値集合タイプも値リストもないですもんね 質問ももう一度きちんと書き直していただいたほうがいいみたいですね こういうところでのやり取りは言葉だけが手がかりです 共通の用語で話していただかないと何がなんだか分かりません

noname#49321
質問者

お礼

もう一度、質問しなおします。ありがとうございました。

その他の回答 (2)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>これで転記ができているのでしょうか?? 1か0が代入されていますね ○や×は代入していないですよ

noname#49321
質問者

補足

ご回答ありがとうございます。。非連結フォームの値集合タイプを値リストにして、値集合ソースに1;○;0;×と書き込みしました。これでも非連結フォームには×しか入っていきません。何故でしょうか??

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

アップされたコードは転記をしている部分じゃないですよ

noname#49321
質問者

補足

Private Sub list_TAN_AfterUpdate() Me.コード = Me.list_TAN.Column(0) Me.名前 = Me.list_TAN.Column(1) Me.ふりがな = Me.list_TAN.Column(2) Me.パスワード = Me.list_TAN.Column(3) Me.参照 = Me.list_TAN.Column(4) If Me.list_TAN.Column(4) = "○" Then Me.参照 = 1 Else Me.参照 = 0 End If If Me.list_TAN.Column(5) = "○" Then Me.更新 = 1 Else Me.更新 = 0 End If If Me.list_TAN.Column(6) = "○" Then Me.保守 = 1 Else Me.保守 = 0 End If Me.更新日 = Me.list_TAN.Column(7) Me.cmd_登録.Enabled = False Me.cmd_修正.Enabled = True Me.cmd_削除.Enabled = True Me.cmd_クリア.Enabled = True End Sub これで転記ができているのでしょうか?? すみません。宜しくお願いします。

関連するQ&A

  • アクセスのコンボボックスでの〇×表示について。

    担当者フォームがあります。 クエリをもとにした担当者リスト一覧があります。 非連結のフォームがあります。 担当者フォームには担当者コード、担当者名、パスワード等があり、〇×選択で、参照・更新・保守があります。このフォームで新規登録。修正。削除ができるように作成しました。list_TANの中で項目をクリックすると、非連結のフォームにデータが入っていきます。 Private Sub list_TAN_AfterUpdate() Me.担当者コード = Me.list_TAN.Column(0) Me.担当者名 = Me.list_TAN.Column(1) Me.担当者かな = Me.list_TAN.Column(2) Me.パスワード = Me.list_TAN.Column(3) ' Me.参照 = Me.list_TAN.Column(4) If Me.list_TAN.Column(4) = "○" Then Me.参照 = 1 Else Me.参照 = 0 End If If Me.list_TAN.Column(5) = "○" Then Me.更新 = 1 Else Me.更新 = 0 End If If Me.list_TAN.Column(6) = "○" Then Me.保守 = 1 Else Me.保守 = 0 End If Me.cmd_登録.Enabled = False Me.cmd_修正.Enabled = True Me.cmd_削除.Enabled = True Me.cmd_クリア.Enabled = True で、非連結のフォームにはいっていくことはできたのですが、参照・更新・保守については、コンボボックスになっていて、値リストの集合タイプには1;○;0;×と記入してあります。 参照が〇となっていても、非連結に入ってくるのは×になってしまいます。〇→×、×→×。なのでまた入れなおさなきゃいけません。他の情報についてはうまく入っていってくれるのですが、コンボボックスの〇×だけが上手くいきません。どのようにすればきちんと表示できますか??分かる方いましたらご教示ください。宜しくお願い致します。

  • アクセスでの郵便番号表示について。

    基本情報登録フォームがあります。 クエリをもとにしたlist_基本情報一覧があります。 非連結のフォームがあります。 基本情報登録フォームにはコード、顧客名、郵便番号、住所、電話番号、FAX番号等があります。このフォームで新規登録。修正。削除ができるように作成しました。list_基本情報一覧の中で項目をクリックすると、非連結のフォームにデータが入っていきます。 list_基本情報はクエリの中身を参照しているから郵便番号の表示が8888888と7桁ずらっと表示されています。これはどうにもならないんですよね?このlist_基本情報で表示されている8888888を非連結フォームの郵便番号で表示するときに888-8888と表示することはできないのでしょうか?また同様に修正する場合もありますので888-8888→を8888888となる場合もあるわけです。。郵便番号のコントロールソースに=IIf(IsNull([郵便番号]),"",Left([郵便番号],3) & "-" & Right([郵便番号],4))と書き込んだのですが、上手くいきません。 Private Sub list_HKI_AfterUpdate() Me.顧客コード = Me.list_HKI.Column(0) Me.顧客名 = Me.list_HKI.Column(1) Me.顧客カナ = Me.list_HKI.Column(2) ★Me.郵便番号 = Me.list_HKI.Column(3) Me.住所 = Me.list_HKI.Column(4) Me.電話番号 = Me.list_HKI.Column(5) Me.FAX番号 = Me.list_HKI.Column(6) Me.cmd_クリア.Enabled = True Me.cmd_削除.Enabled = True Me.cmd_修正.Enabled = True Me.cmd_登録.Enabled = False Me.顧客コード.SetFocus End Sub デバックすると★印の行が黄色くなります。どこがいけないのでしょうか?分かる方いましたらご教示ください。宜しくお願いします。

  • AND、OR文にすると選択後の編集が出来ない

    Private Sub 選択_Click() If NewRecord Then MsgBox "編集できません。選択しなおしてください。" Me.Undo End If End Sub 上記の命令が効いていないようです。メッセージも出ません。 Private Sub 編集_Click() Dim strFil As String strFil = "[選択]=" & True DoCmd.OpenForm "編集F", , , strFil 'DoCmd.Close acForm, "スタート画面F" '選択.Value = Null End Sub 上記のスタート画面は消したくないので’を付けてあります。 選択.Value=Null でコンパイルエラーが発生していますので’を付けています。 Private Sub 検証_Click() Dim strFil As String If IsNull(Me.ステータスリスト) And IsNull(Me.申請リスト) Then MsgBox ("コンボボックスの選択がされていません") Exit Sub End If If Not IsNull(Me.ステータスリスト) And IsNull(Me.申請リスト) Then strFil = "[ステータス] ='" & Me![ステータスリスト] & "'" End If If IsNull(Me.ステータスリスト) And Not IsNull(Me.申請リスト) Then strFil = "[申請内容] = '" & Me.申請リスト & "'" End If If Not IsNull(Me.ステータスリスト) And Not IsNull(Me.申請リスト) Then If MsgBox("二つの条件でAND検索をしますか", vbYesNo) = vbYes Then MsgBox ("二つの条件でAND検索をします") strFil = "[ステータス] = '" & Me.ステータスリスト & "'and " & "[申請内容]='" & Me.申請リスト & "'" Else MsgBox ("二つの条件でOR検索をします") strFil = "[ステータス] = '" & Me.ステータスリスト & "' Or " & "[申請内容]='" & Me.申請リスト & "'" End If End If Me.Filter = strFil Me.FilterOn = True End Sub 上記はそのままです。 選択のチェックボックスにチェックを入れてもそのデータが編集画面に反映されない現象が発生してしまいました。どこが悪いのか教えて頂ければ幸いです。

  • Access2007の初心者です。VBAの記述で困っています、お力添え

    Access2007の初心者です。VBAの記述で困っています、お力添えお願いします。 チェックボックスにチェックが入っている場合に、誕生日が空白のものを抽出する部分のVBAの 記述のところで躓いているのだと思っています。 ■テーブルの情報 ・テーブル名:T_会員情報 ・T_会員情報のフィールド:会員名(テキスト形式)・性別(数値型)・誕生日(日付/時刻型) ■実現したいこと ・T_会員情報で、「検索」ボタンを押下したら、条件にあった情報がフォーム上に抽出できるもの。 ■用意したフォーム T_会員情報の連結フォーム ・フォーム上には以下を用意  ◆「性別」の非連結コンボボックス:txtSeibetsu  ◆「誕生日が空白」という非連結チェックボックス:chkBirthday  ◆「AND OR」のいずれかが選択できるオプションボタン  ◆「検索ボタン」  ◆「会員名」「性別」「誕生日」のT_会員情報の帳票フォーム ■VBA Option Compare Database Option Explicit Const cAnd = 1 Const cOr = 2 Const cBaseQuery = "SELECT * FROM T_会員情報" Private Sub 検索ボタン_Click() Dim strWhere As String Dim strAndOr As String strWhere = vbNullString If Me.optAndOr.Value = cAnd Then strAndOr = " AND " Else strAndOr = " OR " End If '性別検索 If ISNull(Me.txtSeibetsu.value)=False Then strWhere = strWhere & strAndOr & " 性別 = " & Me.txtSeibetsu.Value End If '誕生日空白検索 If Me.chkBirthday=False Then strWhere = strWhere & strAndOr & " 誕生日= " & Null End If 'WHERE句編集 strWhere = Replace(strWhere, strAndOr, "WHERE", , 1) 'レコードソース書き換えと再クエリ Me.RecordSource = cBaseQuery & " " & strWhere Me.Requery End Sub 誕生日が空白の検索のところの記述が問題だと思っています。 初心者でよくわかっておりません。 ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願いします。

  • Access2003について

    いつも大変お世話になっています。 この度 Access2003で作業することになったのですが、 今まで、Access2000 か 97、95 でのみ作業経験があります。 Access2000と2003では大きな違いは無いように思うのですが、 モジュールコーディングやフォームのテキストのコントロールソースの指定など 2000で出来たものが2003では出来なくなってしまいました。 例:フォームオブジェクトの値の参照 Ver.2000 If IsNull(Me!テキスト1.Value) = True Then '.ValueはつけなくてもOKだが、つけても問題ない End if Ver.2003 If IsNull(Me!テキスト1) = True Then '.Valueをつけるとエラーになる End if といった大きな差異とはあまり思ってないのですが、 その他になにか違いがあるなら知っておきたいと思いました。 WEBで検索しましたところ、特に見当たらず、 経験などで構いませんので教えていただけると嬉しいです。 又、Access2003 をメインにしているおすすめのサイトなどがありましたら これも教えていただけると嬉しいです。 自分なりにも実際にVer.2003をいじりながら覚えていきたいと思っています。 よろしくご教授お願いいたします。

  • ACCESS

    現在以下のシステムを検討しています。 (1)ログインフォームと(2)トップフォーム(3)注文フォームが別々に存在しており、 (1)ログインフォームは  ・ログインID入力用のテキストボックスが一個  ・パスワード入力用のテキストボックスが一個  ・ログインボタンが1個  設置されています。 以下はログインボタンクリック時に動作するプログラムです。 Private Sub cmdLogIn_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "IDを入力してください" Me.txtID.SetFocus Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "パスワードを入力してください" Me.txtPass.SetFocus Exit Sub End If Res = DLookup("パスワード", "T顧客", _ "顧客ID='" & Replace(Me.txtID, "'", "''") & "'") If IsNull(Res) Then MsgBox "該当するIDはありません。正しいIDを入力してください。" Me.txtID.SetFocus Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "注文フォーム" '----ID,pass合致でフォームを開く。 Me.txtID = Me.txtID2 Me.txtPass = Me.txtPass2 DoCmd.Close acForm, "Fログイン" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical Me.txtPass.SetFocus End If End Sub (2)トップフォームは  商品のリストが画像付き(商品一個につき画像一個)  で示され、画像を押すと商品別に作成してある注文フォームに進むのですが、  ログイン完了していないとログインを促すメッセージが出て注文フォームが開かないよう  にしています。  トップフォームにはテキストボックスを2個不可視の状態で配置しております。  以下は商品画像に埋め込んであるコマンドです。 Private Sub 商品画像 1_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "ログインしてください" Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "ログインしてください" Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "商品名" '----ID,pass合致で注文フォームを開く。 End If End Sub   (3)注文フォームは  ・数量選択のコントロールボックス  ・注文ボタン  ・キャンセルボタン  を設置しています。 【以下が質問内容になります】 「ロフインフォーム」内の入力値(テキストボックスに入力されていたIDやパスワード値)を注文フォーム内のテキストボックスに取得させる(あるいは設定させる)にはどのようにすればよいのでしょうか? 注文フォームにはテキストボックス2個( ID入力用と Password入力用)を不可視で配置しています。こちらのテキストボックス2個については手動入力は行わず、注文フォームが開いた際にログイン時の ID, Paswordがテキストボックスの中に自動的に入力あるいは設定されるようにしたいのですが、どのようにすればよいかがわかりません。 因みにログイン ID,Passwordは複数セットあり、ユーザーがログイン完了後、注文フォームを閉じるまでの間は 同一のID, Paswordの内容を保持したいと考えています。 上記の中にID,Paswordを保持させるようなコードを入れることは可能でしょうか? 注文フォームを開く際のコードに何か入れることができるのではないかと考えていたの ですが、よい案が浮かびません。 他によいやり方などがあれば教えていただけますでしょうか? よろしくお願いします。

  • Accessフォームでの複数条件検索

    検索用テキストが4つとコンボボックスが1つあり、検索ボタンというコマンドボタンを押すと 該当するレコードを表示させるフォームを作りました。 以下がそのVBAです。 Private sub 検索ボタン_click() Dim strfilter As String, strexp As String, aryope As Variant If Not IsNull (me.一) Then strfilter = "And 出版社 Like '*" & Me.一 & "*'" End If If Not IsNull (me.コンボ62) Then strfilter = "And 種類 Like '*" & Me.コンボ62 & "*'" End If If Not IsNull (me.三) Then strfilter = "And 番号 Like '*" & Me.三 & "*'" End If If Not IsNull (me.四) Then strfilter = "And 発刊日 = # " & Format (me.四. "yyyy-mm-dd") & "#" End If If Not IsNull (me.一) Then strfilter = strfilter & " AND " & BuildCritera ( "タイトル", dbText, "*" Replace ( me.五, "", "*AND*") & "*") End If 改正したいことは   1. 検索用テキストボックスに入力された値全てを満たすレコードを表示したい(現在は例えば     出版社、タイトル、番号の3つを入力するとそれぞれの項目にヒットする物がすべて検出さ     れる)   2. テキストボックス[三]の番号は完全一致で抽出したい(26を抽出したいのに126や2673     等も抽出されてしまう)   3. テキストボックス[四]の発刊日は西暦表示から和暦で入力して検索したい     (テキストボックス[四]をコンボボックスに変え、西暦・和暦両方表示にし、[四A]を追加して     月日という名前にしてこれら年月日をくっつけて完全一致で検索する方法を考えましたが     記述がわかりません)   5.タイトルがWeb検索の様に複数曖昧検索ができない     中途半端な検索で抽出してる状態です。     どなたか手直しいただけますでしょうか? 

  • Accessの検索フォーム(CLng)で。

    検索フォームの項目は以下の通りです。 ○ AND  ○ OR 名前  [    ] 項目  [    ]▼  [    ]▼  [    ]▼ もとになってるテーブルは ・名前 ・項目1 ・項目2 ・項目3 ・項目4 ・項目5 というようなっています。 (項目1-5は数値データなのであいまい検索はしたくありません。) 検索ボタンのコードは Select Case Me!検索方法.Value Case 1 'or tempOper = " AND " strCount = 5 Case 2 'and tempOper = " OR " strCount = 4 End Select '名前 If Me!SyainName.Value <> "" Then condName = "(T_マスタ.氏名 like '*" & Me!SyainName.Value & "*')" WhereCond = WhereCond & tempOper & condName End If If Me!項目1.Value <> "" Then condKoumoku1 = "(T_マスタ.項目1 = " & CLng(Me!項目1.Value) & ")" condKoumoku2 = "(T_マスタ.項目2 = " & CLng(Me!項目1.Value) & ")" condKoumoku3 = "(T_マスタ.項目3 = " & CLng(Me!項目1.Value) & ")" tempCond = tempCond & " OR (" & condKoumoku1 & " OR " & condKoumoku2 & " OR " & condKoumoku3 & ")" End If If tempCond <> "" Then tempCond = Mid(tempCond, 5) WhereCond = WhereCond & tempOper & "(" & tempCond & ")" End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果_一覧", acNormal, , WhereCond これを実行すると クエリ式 '((OR OR))' の構文エラー:演算子がありません。 と出ます。 どこを訂正すべきでしょうか? Access2000です。

  • アクセスを教えて下さい

    アクセスを教えて下さい。 Microsoft Visual Basic に以下入力したのですがうまくいきません。 ある数字0~999999までの数字を登録数字より、数字以上、数字未満で抽出したいのですがうまくいきません。 If IsNull(Me!数字以上) Or IsNull(Me!数字未満) Then key(1) = "" Else Dim MyStr1, MyStr2 As String MyStr1 = (Me!数字以上) MyStr2 = (Me!数字未満) key(1) = "登録数字 between #" & MyStr1 & "# " _ & "and #" & MyStr2 & "#" End If 初心者で時間が経つばかりで前に進みません。 宜しくお願い致します。

  • 以下のアクセスの検索フォームで。。。

    検索フォームの項目は以下の通りです。 ○ AND  ○ OR 名前  [    ] 項目  [    ]▼  [    ]▼  [    ]▼ もとになってるテーブルは ・名前 ・項目1 ・項目2 ・項目3 ・項目4 ・項目5 というようなっています。 検索ボタンのコードは Select Case Me!検索方法.Value Case 1 'or tempOper = " AND " strCount = 5 Case 2 'and tempOper = " OR " strCount = 4 End Select '名前 If Me!SyainName.Value <> "" Then condName = "(T_マスタ.氏名 like '*" & Me!SyainName.Value & "*')" WhereCond = WhereCond & tempOper & condName End If '項目 If Me!Koumoku1.Value <> "" Then condKoumoku1 = "(T_マスタ.項目1 like '*" & Me!Koumoku1.Value & "*')" condKoumoku2 = "(T_マスタ.項目2 like '*" & Me!Koumoku1.Value & "*')" condSKoumoku3 = "(T_マスタ.項目3 like '*" & Me!Koumoku1.Value & "*')" tempCond = tempCond & " OR (" & condKoumoku1 & " OR " & condKoumoku2 & " OR " & condKoumoku3 & ")" End If If tempCond <> "" Then tempComd = Mid(tempCond, 5) WhereCond = WhereCond & tempOper & "(" & tempCond & ")" End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果_一覧", acNormal, , WhereCond これを実行すると クエリ式 '(OR((T_マスタ.項目1 like …')の構文エラー:演算子がありません。 と出ます。 どこを訂正すべきでしょうか? (項目を含まない状態ではうまく検索できてました。) Access2000です。

専門家に質問してみよう