- ベストアンサー
繰り返し削除
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とはかなり異なっているようでどうにもなりません。 申し訳ございませんがどなたか御教授いただけないでしょうか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Me.Controls.Item("hinmei" & CStr(i)).Text = "" という感じですね。
その他の回答 (2)
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 > 単票フォーム つまり、hinmei1~10、tanka1~10、kosuu1~10 は 1 つのレコードだという事ですよね。 下記の私の回答はそのつもりで実装し、動作確認したのですが。。。 試していただけたのでしょうか? もし、まだ試していただけていないようでしたら、 VS2005 で、コンソールアプリケーションのプロジェクトを作成し、 下記のソースを貼り付けてみてください。 Data Source=D:\db1.mdb のところはご自身の mdb ファイルへのパスに適宜修正してください。 sql.Write("UPDATE TestTable SET ") の TestTable は、ご自身の更新したいテーブル名に適宜変更してください。
お礼
ご回答本当にありがとうございます。 ただ、やはりうまくいきません。 理由といたしましては (1)現在Accessも含めテーブルは存在していない (2)(1)によりSQL分は必要がない 非連結単票ホーム上のhinmei1~hinmei10のテキストボックスをただ空白(ブランク)にボタンのクリックで行いたいだけなのです。 こんな単純なことで悩むことも情けないのですが、よろしくお願いいたします。 本当に申し訳ございません。
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 コンソールアプリケーションで実装してみました。 このような感じでどうでしょう。 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 は数値型、他はテキスト型とします。
お礼
ご回答ありがとうございます。 私の説明が不十分なのですが、このフォームは連結ではなく非連結なのです。(すみません) 単票フォーム上にhinmei1~10、tanka1~10、kosuu1~10とあり、それらをフォーム上のコマンドボタン(クリアボタン)のクリックイベントでLoopでデータ削除できればと考えております。 Accessでは me.("hinmei" & Cstr(i))="" とやればLoopで問題なくやれたのですが、VB2005ではうまくいきません。 お手数ですが何か方法があれば教えていただきたいのですが、よろしくお願いいたします。
お礼
うわ!ありがとうございます。できました! これで眠れます。 本当にありがとうございました!!!