• 締切済み

SQLから商品マスタを呼ぶ際に「商品ID」に既に登録されてる内容はどう処理すれば?

こんにちわ、jixyoji-と申しますm(._.)m。 VBをやっていてOracleサーバーとの連動処理で困ってることがあります。 既に登録されてる「商品ID」を「実行」ボタンクリック時にMsgBoxで「既に登録済み」と出すにはどうすれば? フォームデザインは追加、更新、削除、実行、取り消しのコマンドボタンと商品ID、商品名、単価の3項目をテキストボックスに表示し、テキストボックスはループ処理にしています。 また追加・更新ボタンはForm load時にintSr1、実行、取り消しはintSr2のフラッグにしています。 Option Explicit Private cn As New ADODB.Connection Private rs As New ADODB.Recordset Private i As Integer Private intSr As Integer Private cmd As New ADODB.Command ~~~~~~~ 続きはVol.2で・・・

みんなの回答

回答No.1

管理者より: 続きの質問があるのでそちらをご参照下さい

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=161003

関連するQ&A

  • SQLでの処理

    開発環境:WindowsXP、VB6、Access2000 ADO接続前提 ファイル全体のデータ(全レコード)に対して連続して処理するにはSQLで対応するのがいいのだと思いますが やりかたがわかりません。 たとえば、つぎのようなAccessのファイルがあったとします。 ファイル名:kojin.mdb テーブル名:name_tbl 名前 年齢 性別   太郎 20 M    花子 40 F 三郎 30 M 洋子 50 F 質問1 年齢順にレコードを並べかえる。 質問2 性別のFをWに一括変換する。 なお、SQLの文法を質問しているのではありません。 下のプログラム1でレコード表示を行ってます。 また、省略しますが、次のレコードや前のレコードを表示したり、レコードの更新・追加・削除などを行うこともできています。 これからどうすればSQL文を使って質問1や2の処理が可能になるのでしょうか? ご教授お願いしたします。 <プログラム1> Private mCn As ADODB.Connection Private mRs As ADODB.Recordset Private DBfile As String 'DBファイル名 Private DBtable As String 'テーブル名 Private Sub Form_Load()  DBfile = "kojin.mdb"  DBtable = "name_tbl"  Call ConnectType  Call SetFields End Sub Private Sub ConnectType() 'DB接続準備処理   Set mCn = New ADODB.Connection   mCn.ConnectionString = DEF_CONNECT & App.Path & "\" & DBfile   mCn.Open   Set mRs = New ADODB.Recordset   mRs.Source = DBtable   mRs.ActiveConnection = mCn   mRs.CursorType = adOpenDynamic   mRs.LockType = adLockOptimistic   mRs.Open End Sub Private Sub SetFields()  Text1.Text = mRs.Fields("名前")  Text2.Text = mRs.Fields("年齢i")  Text3.Text = mRs.Fields("性別") End Sub

  • マウスが触れるとテキストを表示し離れる非表示にする

    アクセスです。 フォームにラベルを設置して、 そのラベルにマウスが触れたらテキストボックスを表示させたいのです。 フォームのオープンイベントは Private Sub Form_Open(Cancel As Integer) Me.テキスト2.Visible = False End Sub になっています。 ラベルのマウスボタン解放時イベントで Private Sub ラベル0_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にして、ラベルをクリックするとテキストボックスが表示されます。 マウスボタン移動時イベントで Private Sub ラベル0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にすると、理想通りラベルからマウスが触れたらテキストボックスが表示されます。 ここまではいいのですが マウスのカーソルが離れたら またテキストボックスを非表示にしたいのですがどうすればいいですか?

  • Access ADO RecordSetについて質問です。

    Access ADO RecordSetについて質問です。 Openイベントでフォームにレコードセットを挿入しています。 その際のフォームにはレコードセットをコントロールソースとしてテキストボックスが10個ほどあります。 しかし、テキストボックスを修正しようとしても、入力が出来ません。 レコードセットの作り方が悪いのか、フォームがおかしいのかわかりません。 流れとしては、帳票フォームより、単票フォームを呼び出し、IDでSQLを発行し、レコードセットを挿入しています。 その単票フォームは修正フォームとして更新したいのですが、入力が出来ず困っています。 詳しい方や同じ事で悩んだ方のアドバイスよろしくお願いいたします。 Private Sub Form_Open(Cancel As Integer) Call SetRecordSet("SELECT * FROM T_Agent WHERE ID =" & Me.OpenArgs, Me) End Sub Public BackEndCn As ADODB.Connection Public BackEndRs As ADODB.Recordset Public Sub SetRecordSet(strSQL As String, FormName As Form) Set BackEndCn = New ADODB.Connection Set BackEndRs = New ADODB.Recordset BackEndCn.ConnectionString = DbPass BackEndCn.Open BackEndRs.Open strSQL, BackEndCn, adOpenKeyset, adLockOptimistic Set FormName.Recordset = BackEndRs BackEndRs.Close: Set BackEndRs = Nothing BackEndCn.Close: Set BackEndCn = Nothing End Sub

  • MySQLへのレコード追加

    VB6でMySQL4.1に接続して テーブル"table1"にレコードを追加したいんですけど MySQLには接続できるんですけど、新しいレコードを 追加できません。 エラーメッセージは  Unknown column 'ID'in'fieldlist' とでます。 教えてください。 Dim SQL As String Dim ID As Integer Dim name As String Dim cmd As ADODB.Command Set cmd = New ADODB.Command ID = Text1.Text name = Text2.Text SQL = "insert into table1(AID,Aname) values(ID,name) " cmd.ActiveConnection = cn cmd.CommandText = SQL cmd.Execute table1の内容は AID Aname ←フィールド名 -------------   1  suzuki 2 satou 3 takahasi みたいな感じです。

  • VisualBasic6でAccess2000にデータ格納

     初めまして私はVB6.0の初心者でVB6.0について勉強しています。今VB6.0でAccess2000を利用する勉強をしています。 <プログラム内容>  フォームに貼り付けたテキストボックス3つ(ID,Password,氏名)とコンボボックス2つ(性別,年齢)にデータを入力しOKボタン(コマンドボタン)を押すとAccess2000のテーブルの中のレコードが追加される。 <条件> ・テーブル名:PROF ・フィールド情報  IDとPasswordと氏名と性別はテキスト型で、年齢は数値型です。  私の場合は以下のようなコードを作成しましたが実行すると「Insert文が間違っている」と出てきてしまいます。何故なのでしょうか。お知恵をお貸しください。宜しくお願いします。 Private Sub OK_Click() 'OKボタンを押下すると 'ADOのオブジェクト変数を宣言 Dim cn As New ADODB.Connection 'Connectionオブジェクトを扱う変数(cn)を宣言 Dim rs As New ADODB.Recordset 'Reocordsetオブジェクトを扱う変数(rs)を宣言 Dim strSQL As String 'SQL文 strSQL = "INSERT INTO PROF " & _ " (ID " & _ " ,Password " & _ " ,氏名 " & _ " ,性別 " & _ " ,年齢) " & _ "VALUES (' ID.Text ' " & _ " ,' Password.Text ' " & _ " ,' Name.Text ' " & _ " ,' Sex.Text ' )" & _ " ,' Age.Text ' )" 'データベースに接続するための情報を設定する(データベースの種類、データソース) cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source = C:\sample\ID.mdb" 'データソースへ接続 cn.Open 'AcccessのPROF(テーブル)のID,Password,氏名,性別,年齢(フィールド)にデータ(ID,Password,氏名,性別,年齢)を挿入 rs.Open strSQL, cn 'コネクションを終了する cn.Close End Sub

  • VBプログラムエラー

    Private number As Integer Private rows As Integer Private columns As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim form2 As New Form() ' Create a button to add to the new form. Dim button1 As New Button() ' Set text for the button. button1.Text = "Scrolled Button" ' Set the size of the button. button1.Size = New Size(1000, 800) ' Set the location of the button to be outside the form's client area. button1.Location = New Point(form2.Size.Width + 200, form2.Size.Height + 200) ' Add the button control to the new form. form2.Controls.Add(button1) ' Set the AutoScroll property to true to provide scrollbars. form2.AutoScroll = True ' Display the new form as a dialog box. form2.ShowDialog() If Not Integer.TryParse(TextBox1.Text, rows) OrElse _ Not Integer.TryParse(TextBox2.Text, columns) OrElse _ Not Integer.TryParse(TextBox3.Text, number) Then MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If Me.Bounds = New Rectangle(10, 10, 1300, 900) Dim cnt As Integer = 0 For k As Integer = 1 To number For i As Integer = 1 To rows For j As Integer = 1 To columns Dim tb As TextBox = New TextBox() cnt += 1 tb.Name = "tb" + cnt.ToString() Me.Controls.Add(tb) tb.Top = (i - 1) * 30 + 80 tb.Left = (j - 1) * 60 + 70 * (columns * (k - 1)) + 10 tb.Width = 50 Next Next Next End Sub スクロール画面を作成し、 そのスクロール画面上にボタンを1つ作り、 テキストボックスが出てくるようにしたいです。 どうすればできるのでしょうか 。 これはわかるところまで作成しています。

  • コントロールに触れたら使用可能にしたい

    通常は「使用可能」を「いいえ」にして、テキストボックスにカーソルが振れたら、使用可能を「はい」にしたいのですが Private Sub ID_Enter() Me.ActiveControl.Enabled = True End Sub Private Sub ID_GotFocus() Me.ActiveControl.Enabled = True End Sub Private Sub ID_LostFocus() Me.ActiveControl.Enabled = True End Sub Private Sub ID_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.ActiveControl.Enabled = True End Sub どれもクリックしないと動作しないようなのですが、このような場合、どのイベントを使えばいいのでしょうか?

  • Accessのレポートに取り消し線を表示したい

    いつもお世話になっています。 名簿を作成しているのですが、結婚して姓が変わった場合、 上書きせずに新しい姓を別のテキストボックスに入力します。 これをレポートとして出力する際、新しい姓が入力された場合は、 過去の指名のテキストボックスに二重線を引きたいのですが うまくいきません。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub お力添えをお願いいたします。

  • VBAでオプションボタンの更新ができるようにしたい

    こんにちは。アクセスのVBAについてご質問です。「更新」をクリックすると、テーブルと非連結(なのかな?)のオプションボタン「変更の有無」でクリックしたボタンの更新ができるようにしたいのです。テーブルの項目名は「変更の有無(yes/no形式)」ですが、オプショングループには「opt有無」という名前を付け、「有」と「無」のボタンをつけました。おおまかにコードを載せてみます。これではだめなんでしょうか?どうぞよろしくお願いいたします。 Option Compare Database Dim cn As ADODB.Connection 'Connectionオブジェクト Dim rs As ADODB.Recordset 'Recordsetオブジェクト Private Sub Form_Load() Set cn = CurrentProject.Connection '[T許可書]テーブルからデータを取得 Set rs = New ADODB.Recordset rs.Open "T許可書", cn, adOpenKeyset, adLockOptimistic, adCmdTableDirect '変数selected貸出IDが0と等しくない(値がセットされている)のであれば、IDがその値のレコードを検索してカレントレコードにする If selected貸出ID <> 0 Then rs.Index = "PrimaryKey" rs.Seek selected貸出ID, adSeekFirstEQ End If 'ShowRecordプロシージャを呼び出し、フォームにカレントレコードを表示する Call ShowRecord End Sub Private Sub 更新_Click() Dim rtn As Integer 'メッセージボックスで押されたボタンの情報が入る '更新確認 rtn = MsgBox("このレコードを更新してよろしいですか?", vbQuestion + vbYesNo, "確認") If rtn = vbYes Then 'カレントレコードを編集 rs.Update rs!変更有無, rs!変更有無 MsgBox "更新完了しました。", vbInformation, "確認" Else End If End Sub

  • VBのプログラム

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Not Integer.TryParse(TextBox1.Text, rows) OrElse _ Not Integer.TryParse(TextBox2.Text, columns) OrElse _ Not Integer.TryParse(TextBox3.Text, number) Then MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If Me.Bounds = New Rectangle(10, 10, 1300, 900) Dim cnt As Integer = 0 For k As Integer = 1 To number For i As Integer = 1 To rows For j As Integer = 1 To columns Dim tb As TextBox = New TextBox() cnt += 1 tb.Name = "tb" + cnt.ToString() Me.Controls.Add(tb) tb.Top = (i - 1) * 20 + 70 tb.Left = (j - 1) * 50 + 60 * (columns * (k - 1)) + 5 tb.Width = 55 Next Next Next End Sub これはボタンを押すと テキストボックスに入力された値分だけテキストボックスが出てくるというものです。 例えば 3 4 4とテキストボックスに値が入力された場合 3行4列が4個分テキストボックスが出てきます。 しかし6 6 6と入力した場合画面に入りきらなくなってしまいます。 大きな値を入力しても画面に入れたいです。 これはスクロールなどしてできるようにしたいです。 どのようなソースでできるのでしょうか。