• ベストアンサー

繰り返し削除

Access2002で次のようなことをLoop処理でやっています。 =========================================================== Dim i As Integer i = 0 Do Until i = 10 i = i + 1 Me("品コード" & CStr(i)) = "" Me("品名" & CStr(i)) = "" Me("入数" & CStr(i)) = 0 Me("重量" & CStr(i)) = 0 Me("ケース" & CStr(i)) = 0 Me("バラ" & CStr(i)) = 0 Me("倉番" & CStr(i)) = "" Me("ロット1-" & CStr(i)) = "" Me("ロット2-" & CStr(i)) = "" Me("ロット3-" & CStr(i)) = "" Me("数量" & CStr(i)) = 0 Loop ============================================ 単票フォームで10行明細を作成しております。親=サブのフォームタイプではありません。 上記のことをVB2005で実現しようとした場合、エラーばかりでうまくいきません。試行錯誤してはいるのですが変数やらメソッドやらかつてのVBとはかなり異なっているようでどうにもなりません。 申し訳ございませんがどなたか御教授いただけないでしょうか

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

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

Me.Controls.Item("hinmei" & CStr(i)).Text = "" という感じですね。

gorozaemon
質問者

お礼

うわ!ありがとうございます。できました! これで眠れます。 本当にありがとうございました!!!

その他の回答 (2)

回答No.2

お世話になります。 > 単票フォーム つまり、hinmei1~10、tanka1~10、kosuu1~10 は 1 つのレコードだという事ですよね。 下記の私の回答はそのつもりで実装し、動作確認したのですが。。。 試していただけたのでしょうか? もし、まだ試していただけていないようでしたら、 VS2005 で、コンソールアプリケーションのプロジェクトを作成し、 下記のソースを貼り付けてみてください。 Data Source=D:\db1.mdb のところはご自身の mdb ファイルへのパスに適宜修正してください。 sql.Write("UPDATE TestTable SET ") の TestTable は、ご自身の更新したいテーブル名に適宜変更してください。

gorozaemon
質問者

お礼

ご回答本当にありがとうございます。 ただ、やはりうまくいきません。 理由といたしましては (1)現在Accessも含めテーブルは存在していない (2)(1)によりSQL分は必要がない 非連結単票ホーム上のhinmei1~hinmei10のテキストボックスをただ空白(ブランク)にボタンのクリックで行いたいだけなのです。 こんな単純なことで悩むことも情けないのですが、よろしくお願いいたします。 本当に申し訳ございません。

回答No.1

お世話になります。 コンソールアプリケーションで実装してみました。 このような感じでどうでしょう。 Public NotInheritable Class StartUp   <STAThread()> _   Public Shared Sub Main()     Const CONNECTION_STRING As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb;User Id=admin;Password=;"     Dim oleConn As OleDb.OleDbConnection = New OleDb.OleDbConnection(CONNECTION_STRING)     Try       oleConn.Open()       Dim command As OleDb.OleDbCommand = oleConn.CreateCommand()       Try         command.CommandText = CreateUpdateSql(2)         command.ExecuteNonQuery()       Finally         If Not command Is Nothing Then command.Dispose()       End Try     Finally       If Not oleConn Is Nothing Then         oleConn.Close()         oleConn.Dispose()       End If     End Try   End Sub   Private Shared Function CreateUpdateSql(ByVal max As Integer)     Dim sql As System.IO.StringWriter = New System.IO.StringWriter     sql.Write("UPDATE TestTable SET ")     For index As Integer = 1 To max       sql.Write("[品コード" & CStr(index) & "] = '',")       sql.Write("[品名" & CStr(index) & "] = '',")       sql.Write("[入数" & CStr(index) & "] = 0,")       sql.Write("[数量" & CStr(index) & "] = 0")       If index < max Then sql.Write(",")     Next     Return sql.ToString()   End Function End Class ↑のアプリケーションの前提として、 D:\ に db1.mdb という Access データベースが存在し、 (Access2003 で動作確認) そのデータベースの中には TestTable というテーブルが存在します。 TestTable には 品コードn, 品名n, 入数n, 数量n という列が存在し、 n は 1 ~ 2 までとします。 入数n, 数量n は数値型、他はテキスト型とします。

gorozaemon
質問者

お礼

ご回答ありがとうございます。 私の説明が不十分なのですが、このフォームは連結ではなく非連結なのです。(すみません) 単票フォーム上にhinmei1~10、tanka1~10、kosuu1~10とあり、それらをフォーム上のコマンドボタン(クリアボタン)のクリックイベントでLoopでデータ削除できればと考えております。 Accessでは me.("hinmei" & Cstr(i))="" とやればLoopで問題なくやれたのですが、VB2005ではうまくいきません。 お手数ですが何か方法があれば教えていただきたいのですが、よろしくお願いいたします。

関連するQ&A