0

私はプログラミングが初めてです。Visual Basic 2010 を使用しています。CoreDataSet という名前の Access データ ソースがあり、Rates、Vendors、Zones の 3 つのテーブルがあります。Vendors テーブルを 2 つのコンボ ボックスにバインドしました。Vendors の名前を選択すると、対応するコンボ ボックスの横のラベルに郵便番号の最初の 3 桁が表示されます。これら 2 つのラベル (または 2 つの 3 桁の郵便番号) を取得し、「ゾーン」テーブルへの相互参照を行います。ゾーン テーブルには、上部 (列名) に 3 桁の zip のリストがあり、2 番目の列に 3 桁の 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 への配送はゾーン 3 になり、022 から 022 への配送はゾーン 1 になります。目標は、2 つのベンダー (各コンボ ボックスに 1 つずつ) を選択し、フォームのラベル 1 と 2 に 3 桁の郵便番号を表示することです (完了)。 ) およびそれらに適用される UPS ゾーンは、ラベル 3 (未実施) にあります。相互参照は可能ですか?助けてください、ありがとう。

私はそれの半分を働かせました。次のようにクエリ (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 に答える