好的,我希望程序制作一些表,并且每个表都通过for循环使表列成为可能 这是我的代码:
For i As Integer = 1 To Val(DatabaseCreationPage.TablesNumber.Text)
cc.CommandText = "CREATE TABLE " & DatabaseTableCreationPage.tablesnames(i).Text
cc.ExecuteNonQuery()
If Val(DatabaseTableCreationPage.NumberOfColumnsInTable(i).Text) = 1 Then
cc.CommandText = "ALTER TABLE " & DatabaseTableCreationPage.TablesNames(i).Text & " ADD " & set1.ColumnsNames(1).Text & " " & set1.TypeOfColumns(1).Text
cc.ExecuteNonQuery()
ElseIf Val(DatabaseTableCreationPage.NumberOfColumnsInTable(i).Text) = 2 Then
For i1 As Integer = 1 To Val(DatabaseTableCreationPage.TablesNames(i).Text)
cc.CommandText = "ALTER TABLE " & DatabaseTableCreationPage.TablesNames(i).Text & " ADD " & set1.ColumnsNames(i1).Text & " " & set1.TypeOfColumns(i1).Text
cc.ExecuteNonQuery()
Next
我希望它是:
For i As Integer = 1 To Val(DatabaseCreationPage.TablesNumber.Text)
dim setForms as string = "set" & i
cc.CommandText = "CREATE TABLE " & DatabaseTableCreationPage.tablesnames(i).Text
cc.ExecuteNonQuery()
If Val(DatabaseTableCreationPage.NumberOfColumnsInTable(i).Text) = 1 Then
cc.CommandText = "ALTER TABLE " & DatabaseTableCreationPage.TablesNames(i).Text & " ADD " & setForms.ColumnsNames(1).Text & " " & setForms.TypeOfColumns(1).Text
cc.ExecuteNonQuery()
ElseIf Val(DatabaseTableCreationPage.NumberOfColumnsInTable(i).Text) = 2 Then
For i1 As Integer = 1 To Val(DatabaseTableCreationPage.TablesNames(i).Text)
cc.CommandText = "ALTER TABLE " & DatabaseTableCreationPage.TablesNames(i).Text & " ADD " & setForms.ColumnsNames(i1).Text & " " & setSetForms.TypeOfColumns(i1).Text
cc.ExecuteNonQuery()
Next
因为我有table1,table2,table3和amp;等
所以我有set1,set2,set3,set4&等
TablesNames和NumberOfColumnsInTable是一种形式的数组,它使计算机根据我选择的表数自动创建TablesNames和NumberOfColumnsInTable:
dim TablesNames() As TextBox
ReDim TablesNames(DatabaseCreationPage.TablesNumber.Text)
For TableNumber As Integer = 1 To val(DatabaseCreationPage.TablesNumber.Text)
TablesNames(TableNumber) = New TextBox
With TablesNames(TableNumber)
.Name = "textbox" & TableNumber.ToString
.Size = New System.Drawing.Size(229, 20)
.Location = New System.Drawing.Point(140, TableNumber * 25)
.Enabled = True
.Visible = True
End With
Me.Controls.Add(TablesNames(TableNumber))
Next
注意:我不能在每个表格中选择超过10个表格,我不能选择超过10列
答案 0 :(得分:2)
为什么要使用有意义的控件名称?
我经常看到的最常见的是匈牙利命名约定和Pascal命名约定。每个人对这些命名惯例都有自己的想法,但我认为这有点细分。
Label
Button
调用一个可以保存数据的例程/方法Form
,其中包含某种人的详细信息。 这只是一个简短的例子,您可以找到更多here。 Joel Spolsky提供了另一篇精彩的读物here ......
至于你的问题......
for counter as integer = 1 to 10
dim forms as string = "form" & counter
forms.textbox1.text = "test"
next
在您的示例中,您有一个只循环并添加到字符串的计数器,但是您使用string.control.text
这不起作用......
试试这个;是的还有其他方法......
Dim arrNames As New List(Of String) 'This will have all your strings in an array...
For i As Integer = 1 To 10
arrNames.Add(CStr("frm" & i.ToString()))
Next
现在你可以使用你可以使用的集合中的所有字符串......再次,这是一个坏主意;打我甚至做这样的事情......你真的应该先命名你的控件,然后根据控件名称自己设置一些字符串......