首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >vb2008从组合框中检索选定项目的值并显示到多个文本框中

vb2008从组合框中检索选定项目的值并显示到多个文本框中
EN

Stack Overflow用户
提问于 2013-02-14 01:45:35
回答 1查看 2.1K关注 0票数 0

我想问一下如何获取combobox的选定值,然后将其显示到多个文本框中。组合框中填充了数据库中的疾病。现在,当从组合框中选择一种疾病时,该疾病的症状应该显示在许多文本框中。目前,我有10个针对症状的文本框。表结构是id、疾病、症状。下面是我的代码:

代码语言:javascript
运行
复制
Dim mycmd As New MySqlCommand
Dim dtr As MySqlDataReader
Call Connect()
        Dim str As String
        str = "Select symptoms from diagnose where illness = @ill"
        mycmd.Parameters.AddWithValue("ill", cmbRecord.Text)
        mycmd.CommandText = str
        dtr = mycmd.ExecuteReader
        While dtr.Read()
            symp0.Text = dtr("symptoms")
            symp1.Text = dtr("symptoms")
            symp2.Text = dtr("symptoms")
            symp3.Text = dtr("symptoms")
            symp4.Text = dtr("symptoms")
            symp5.Text = dtr("symptoms")
            symp6.Text = dtr("symptoms")
            symp7.Text = dtr("symptoms")
            symp8.Text = dtr("symptoms")
            symp9.Text = dtr("symptoms")
        End While
myConn.Close()

从组合框中选择疾病时,症状应显示在这些文本框中。假设所选疾病在表中只有4种症状,则symp0 to symp3文本框将逐个显示症状,并将其余文本框留空。

问题是,当选择一种疾病时,这些文本框只显示存储在数据库中的该疾病的最后一个症状。

例如:发烧。在表中,它有4个症状:冷,热,热,头痛,头晕。如果选择了发烧,则从symp0symp9文本框仅显示头晕。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-14 10:05:20

dtr("symptoms")从当前行获取列"symptoms"的值。在赋值到文本框#1到#10之间,您不会使读者前进到下一行,这就是为什么您在所有文本框中看到相同的值。

现在来回答你的问题,为什么它是所有文本框中的最后一个症状。通过使用dtr.Read()遍历各行,每次都会重新分配Textboxes的值,直到最后一个值被分配为止。此时不会进行后续赋值,因此最后一个值将保留在屏幕上。

您要查找的内容可能如下所示:

代码语言:javascript
运行
复制
Dim symptoms As New List(Of String)
While dtr.Read()
  symptoms.Add(dtr("symptoms"))     
End While

'set available symptoms
Dim arrayOfTextboxes() As TextBox = {symp0, ... put all textboxes here..., symp9}
Dim i As Integer = 0
For i = 0 To symptoms.Count - 1
  arrayOfTextboxes(i).Text = symptoms(i)
Next

'clear other textboxes
For j = i to UBound(arrayOfTextboxes)
  arrayOfTextboxes(j).Text = String.Empty
Next

假设您要显示的症状少于10个。对于任何数量的症状,您可以通过将其DataSource设置为symptoms来使用ListBox。您的代码将变得更加紧凑:

代码语言:javascript
运行
复制
Dim symptoms As New List(Of String)
While dtr.Read()
  symptoms.Add(dtr("symptoms"))     
End While
YourListBoxWithSymptoms.DataSource = symptoms
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14859711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档