0

我对编程很陌生。我正在使用 Visual Basic 2010。我有一个名为 CoreDataSet 的 Access 数据源,它有三个表:Rates、Vendors、Zones。I have binded the Vendors table to two Combo boxes, when a Vendors' Name is selected the first three digits of their zip code appears in a label next to the corresponding combo box. 我想使用这两个标签(或两个 3 位邮政编码)并交叉引用“区域”表。zone 表的顶部有一个三位数的 zip 列表(列名)和第二列的三位数 zip,如下所示(示例):

ID| ZIP | 020    |  021   | 022 ...
--+-----+--------+--------+-----------
1 | 020 | ZONE 1 | ZONE 2 | ZONE 3 ...
2 | 021 | ZONE 2 | ZONE 1 | ZONE 3 ...
3 | 022 | ZONE 3 | ZONE 2 | ZONE 1 ...

因此,从邮政编码 022 到 021 的运输将是 ZONE 3,而从 022 到 022 的运输将是 Zone 1。目标是选择两个供应商(每个组合框中一个)并在标签 1 和 2 中显示它们的 3 位数拉链(完成) 以及标签 3 中适用于它们的 UPS 区域(未完成)。交叉引用甚至可能吗?请帮忙,谢谢。

我得到了一半的工作。我已经完成了一个查询(QueriesTableAdapter.query1),如下所示:

Select [020]
From Zones
Where (Zip = ?)

我的VB代码是:

Private Sub Button2_Click(ByVal...blablabla)
    Dim BTR As CoreDataSetTableAdapters.QueriesTableAdapter
    BTR = New CoreDataSetTableAdapters.QueriesTableAdapter()
    Dim returnValue As String
    Dim zip1 As String
    zip1 = Val(Label2.text)
    returnValue - CTYPE(BTR.query1(zip1), String)
    Label3.Text = returnValue
End Sub

这将选择从 020 shipping 到输入 label2 的任何 zip 的区域,并且工作正常。但是,我需要选择各种“发货人”,而不仅仅是 020...

Select [" + Label1 + "]
From Zones
Where (Zip = ?)

不起作用。如何在 select 子句中使用参数或让它将 Label1 的值识别为要选择的列?

4

1 回答 1

0

基本上你想要这样的查询:

SELECT zones.[020]
FROM zones
WHERE zones.[zip]="021"

现在您所要做的就是针对用标签替换字段(列)和值的连接调整查询。

例如:

s= "SELECT zones.[" + Label1 + "] FROM zones WHERE zones.[zip]='" + Label2 + "'"

如果 label2 可以编辑,则需要参数查询。

你的桌子设计有点奇怪。

于 2012-09-19T09:17:41.927 回答