投稿者 他路  (社会人) 投稿日時 2011/5/17 15:14:24
お世話になっております。早速ですが教えてください。
VisualBasic2010 と Access2010 を使用しています。

①TextK を、Access2010 で作成された、テーブル(基礎全データ)に新規レコードを作成し
  最初のフィールドに入力しようとしています。ところがテーブルには、ゼロサプレスされた
  (余分なゼロを省略)ものが、入力されてしまいます。
  どこが問題なのでしょうか?
  テーブル(基礎全データ)の全フィールド(27フィールド)は、テキスト型です。
  テーブルに入力する直前の MsgBox(TextK) では、例えば 0001 と表示されますが
  Access2010のテーブルには、 1 が入力されています。
  また、Access2010のテーブルを開いて、手動で、 0001 と入力すると、その通り入力
  されます。

   Com = New OleDb.OleDbCommand("INSERT INTO 基礎全データ Values(" & TextK _
     & ",'','','','','','','','','','','','','','','','','','','','','','','','有効','',yes)",cn)

    を
    .........INTO 基礎全データ Values(" & TextK.PadLeft(4,"0") _    
              & ",'','','','','','','','','','','','','','','','','','','','','','','','有効','',yes)",cn)

  としても、同じでした。


②Com = New OleDb.OleDbCommand("INSERT INTO 基礎全データ Values(" _
          & TextK.PadLeft(4,"0") & ",'','','','','','','','','','','','','','','','','','','','','','','','有効','',yes)",cn)
   で、最初のフィールドに、TextK を入力し残りの26フィールドに空白を入力する
 ようにしています。すっきりとできるコードはあるのでしょうか?

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

---------------------------------------------


         TextK = Trim$(ExtArr(1,2))
        Dim Com As OleDb.OleDbCommand
        Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" _
                          & "Data Source=H:\台帳.accdb;")
         cn.Open()
         Try
MsgBox(TextK)
             Com = New OleDb.OleDbCommand("INSERT INTO 基礎全データ Values(" & TextK.PadLeft(4,"0") & ",'','','','','','','','','','','','','','','','','','','','','','','','有効','',yes)",cn)
             Com.ExecuteNonQuery()
             cn.Close()
             MessageBox.Show("追加しましよ。","通知")
         Catch ex As Exception
             cn.Close()
             MessageBox.Show(ex.Message,"通知")
         End Try

-------------------------------------------------