VB 获取 Java 窗体_获取VB 2008中的所有列表框项

本文介绍了一个VB应用程序,该程序包含三个列表框用于管理食谱配料。当用户从lstIngredient中选择配料并点击查找按钮时,程序应在数据库中查找使用这些配料的食谱。目前的问题是,尽管代码没有错误,但搜索结果只返回了用户最后选择的配料对应的食谱,而非所有匹配的食谱。
摘要由CSDN通过智能技术生成

我正在研究食谱库 . 我有一个包含3个列表框(lstIngredient,lstSelected,lstRecipe)和一个查找按钮的表单 . lstIngredient填充了存储在数据库中的成分名称 .

当用户在lstIngredient中选择(双击)一个名称时,它将被列为lstSelected . 之后,当用户点击查找按钮时,它将在数据库中找到食谱使用这些成分的内容 . 数据库中的表如下所示:

id | recipe | ingredient

1 | spaghetti | tomato sause

2 | spaghetti | cheese

3 | spaghetti | hotdog

4 | burger | bread bun

5 | burger | burger patty

6 | burger | cheese

所以在这里,说用户选择 cheese , bread bun 和 hotdog (注意:这些项目是逐个选择的),这些将列在lstSelected中 . 单击“查找”按钮时,结果应为 burger 和 spaghetti . 如果您注意到,汉堡是列表中的第一项......我已经做了以下事情:

Call Connect()

Dim dt As New DataTable

Dim cmd As New MySqlCommand

Try

lstRecipe.Items.Clear()

cmd.Connection = myConn

cmd.CommandText = "select recipe from cook_book where ingredient = @item"

cmd.Parameters.AddWithValue("item", lstSelected.Items)

myReader = myCmd.ExecuteReader

If (myReader.Read()) Then

myReader.Close()

myAdptr.SelectCommand = cmd

myAdptr.Fill(dt)

lstRecipe.DisplayMember = "recipe"

For Each row As DataRow In dt.Rows

lstRecipe.Items.Add(row("recipe"))

Next

Dim builder As New StringBuilder()

builder.Append("select distinct recipe from cook_book where")

For y As Integer = 0 To lstSelected.Items.Count - 1

Dim parameterName As String = "@item" & y.ToString()

If y <> 0 Then

builder.Append("and ")

End If

builder.Append(parameterName)

builder.Append(" in (select ingredient from cook_book where recipe = i.recipe) ")

cmd.Parameters.AddWithValue(parameterName, lstSelected.Items(y))

Next

cmd.CommandText = builder.ToString()

End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

cmd = Nothing

myReader = Nothing

myConn.Close()

Call Disconnect()

代码在btnFind_Click事件下 . 我没有收到任何错误,但它没有按照它应该的方式运行 . 它只找到用户选择的最后一种成分的最后一个配方 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值