-1

プログラムを Visual Basic 6 から Visual Studio 2010 に更新していますが、もちろん、多くの問題が見つかったので解決します。

同じキー (インデックス) を持つ 4 つのテーブルを持つ Access データベースを使用しています。

次のコードを使用すると、CodDekafix テーブルから最後のレコードを取得できます。

Private Sub cmdLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles   cmdLast.Click
    Dim Con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DEKAFIX\Consulta Dekafix\dekafix.mdb")
    Dim cmd As New OleDbCommand()
    Con.Open()
    sql = "Select * From Indice Where CodDekafix=(Select max(CodDekafix) From Indice)"

しかし、以下に示すように、同じキー (インデックス) を持つすべてのテーブルからすべての結果を取得したい場合、プログラムは機能しません。

sql = "Select * from Indice, dekafix1, dekafix2, dekafix3" _
      & " where CodDekafix=(Select max(CodDekafix) From Indice) and" _
      & " Indice.CodDekafix = dekafix1.CodDekafix and" _
      & " dekafix1.CodDekafix=dekafix2.CodDekafix and" _
      & " dekafix2.CodDekafix=dekafix3.CodDekafix and" _
      & " ORDER BY Indice.CodDekafix"
4

1 に答える 1

4

2 番目のコード サンプルの SQL コードは無効です。VB コードで文字列を表す書式を取り除くと、次のようになります。

Select * from Indice, dekafix1, dekafix2, dekafix3
where CodDekafix=(Select max(CodDekafix) From Indice) and
Indice.CodDekafix = dekafix1.CodDekafix and
dekafix1.CodDekafix=dekafix2.CodDekafix and
dekafix2.CodDekafix=dekafix3.CodDekafix and
ORDER BY Indice.CodDekafix

ここには 2 つの問題があります。

1) ORDER BY 句の前に余分な「and」があります。それを除く。

2) WHERE 句の最初の行にはあいまいな参照が CodDekafixあります。どのテーブルから来ているかを指定する必要があります。に置き換えるCodDekafixIndice.CodDekafixうまくいくはずです。

sql = "Select * from Indice, dekafix1, dekafix2, dekafix3" _
  & " where Indice.CodDekafix=(Select max(CodDekafix) From Indice) and" _
  & " Indice.CodDekafix = dekafix1.CodDekafix and" _
  & " dekafix1.CodDekafix=dekafix2.CodDekafix and" _
  & " dekafix2.CodDekafix=dekafix3.CodDekafix" _
  & " ORDER BY Indice.CodDekafix"
于 2013-04-25T13:30:15.337 に答える