Sql 连接不同文本框的字符串,然后再次拆分

Sql 连接不同文本框的字符串,然后再次拆分,sql,vb.net,Sql,Vb.net,我是vb.net新手,所以不太熟悉所有vb函数。在使用1 Windows应用程序时,在下订单时,我们需要保存产品及其规格,如重量、高度、宽度、颜色、长度、材料等。 因为每个产品都可以有不同的规格,所以不可能在数据库中确定和提供字段 所以,我决定提供文本框,这样用户可以在输入产品详细信息时输入名称和值。1个文本框用于名称,其他文本框用于值。 像这样 Textbox1 = "WEIGHT" TextBox2 = "10" '(Value of Weight) Textbox3 = "WIDT

我是vb.net新手,所以不太熟悉所有vb函数。在使用1 Windows应用程序时,在下订单时,我们需要保存产品及其规格,如重量、高度、宽度、颜色、长度、材料等。 因为每个产品都可以有不同的规格,所以不可能在数据库中确定和提供字段

所以,我决定提供文本框,这样用户可以在输入产品详细信息时输入名称和值。1个文本框用于名称,其他文本框用于值。 像这样

Textbox1 = "WEIGHT"     TextBox2 = "10" '(Value of Weight)
Textbox3 = "WIDTH"      TextBox4 = "5" '(value of Width)
Textbox4 = "LENGTH"      TextBox5 = "5" '(Value of Length)
(所有这些文本框都是在Groupbox“GBox1”中动态创建的)

而不是将产品规格保存在单独的列中。我想将这些名称和值保存为字符串,例如SQL数据库中的“WEIGHT=10;WIDTH=5;LENGTH=5”(文本或VARCHAR字段)。因为我们不想对此进行任何计算或搜索等。只需客户要求预订订单并保存在数据库中以备将来记录

然后,在调用或编辑产品时,再次将字符串拆分为单独的字段,字符串Before=separate和字符串after=separate,然后在文本框中显示所有名称及其对应的值(添加时显示),以便用户可以编辑,更改后再次另存为单个字符串值

搜索后,我找到了用于此目的的拆分和联接函数。 在使用循环中的这些函数合并文本框中的字符串时需要一些帮助吗 为每个循环读取Groupbox中的所有文本框

Dim ItemList As New ArrayList()
Dim PrDetails As String
For Each Ctrl As Control In GBox1.Controls
    If TypeOf Ctrl Is TextBox Then
        ItemList.Add(CType(Ctrl, TextBox).Text)
    End If
Next
PrDetails = String.Join() 
如何对这些数组列表执行联接?并在从数据库检索时再次拆分此模式


还需要有关此方法或任何其他实施方式的建议。谢谢。

要使此解决方案起作用,您需要接受这样一个事实,即您的解决方案需要一定程度的标准化
TextBox1
TextBox3
不能作为名称使用,因此我使用了
txtName1
txtValue1
等来测试此解决方案。要测试此解决方案,请创建一个新表单,放入
GroupBox1
,将代码粘贴到类中并运行

Private nameTextBoxName=“txtName”'名称文本框前缀
私有值textboxname=“txtValue”'值文本框前缀
参数集之间的Private paramSeparator=“;”
私有名称和值分隔符=“=”,位于名称和值之间
组框内水平间距的专用xOffset=10'
组框内垂直间距的专用yOffset=20'
私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
“您的示例数据
Dim testString=“重量=10;宽度=5;长度=5”
'设置文本框
SetTextBox(测试字符串)
'从文本框中获取字符串
Dim结果=getTextBoxesString()
端接头
'调用以获取包含文本框中所有数据的字符串
私有函数getTextBoxessString()作为字符串
Dim stringToDatabase=“”
Dim TEXTBOX=GroupBox1.Controls.Of类型(控件)。
其中(co的功能(co作为控制)类型为文本框)。
选择(文本框的)(功能(co作为控件)CType(co,文本框))
Dim NAMETEXTBOX=文本框。其中(函数(co As控件)co.Name.Contains(名称文本框名称))
Dim VALUETEXBOX=文本框。其中(函数(co As控件)co.Name.Contains(VALUETEXBOXNAME))
stringToDatabase=NameTextBox。选择(字符串的)(
函数(将文本框命名为文本框)
尺寸值文本框=值文本框。
其中(函数(vtb作为文本框)vtb.Name=nameTextBox.Name.Replace(nameTextBoxName,valueTextBoxName))。
第一()
返回nameTextBox.Text&nameAndValueSeparator&valueTextBox.Text
结束函数)。聚合(函数(oldValue、newValue)oldValue和paramSeparator和newValue)
返回字符串到数据库
端函数
'调用以根据数据字符串设置groupbox中的文本框
私有子SettXtboxs(textBoxesString作为字符串)
Dim params=textboxessString.Split(参数分隔符)
尺寸指数=1
GroupBox1.Controls.Clear()
对于params中的每个param
尺寸名称和值=参数拆分(名称和值分隔符)
Dim nameTextBox作为新的文本框,带有
{.Name=nameTextBoxName&index.ToString(),
.Text=名称和值(0),
.Location=新点(xOffset,(索引-1)*.Height+yOffset)}
Dim valueTextBox作为新的文本框,带有
{.Name=valueTextBoxName&index.ToString(),
.Text=名称和值(1),
.Location=新点(.Width+xOffset,(索引-1)*.Height+yOffset)}
GroupBox1.Controls.Add(nameTextBox)
GroupBox1.Controls.Add(valueTextBox)
指数+=1
下一个
端接头

这需要做很多工作。在你所采取的方法中,如果你想按一个或多个属性排序,那将是非常痛苦的。也许您需要一个具有产品规格的表?<代码> ARARYLIST/<代码>是旧的,不是特定类型的,请考虑“<代码>列表(字符串)< /COD> >。我将把数据保存为XML。如果您使用的是SQL Server(或其他顶级名称),那么您也可以直接从数据库中查询此信息。将字符串粘在一起并切碎以获取完整信息究竟是如何在任何地方保存任何内容的?你在说什么“计算”?如果H、W、Wt对应用程序有意义,则不应将它们转换为字符串并粘在一起。但是,要回答您的问题,您应该使用拆分和联接。我将有2个保留字符(用户无法键入)。1用于拆分控件(名称/值对),然后1用于拆分名称和值。它工作得很好,经过一些修改,我可以在我的表单中实现:)