2011-03-20 64 views
0

有人可以幫我寫一個查詢,將兩個表加入一個。我嘗試以下,但我得到的錯誤:加入兩個訪問表到一個

"No value given for one or more required parameters."

Dim CmdStr As String = "SELECT col1, col2 FROM table1 UNION SELECT col1,col2 FROM table2" 
+0

您的表結構是什麼樣的?你的SQL看起來是正確的,但是其中一個表中很可能不存在col1或col2。此外,請包括所有相關的代碼。請幫助我們來幫助你。 – JohnFx 2011-03-20 04:08:34

+0

你的編程環境是什麼?在VBA中,你當然不能在你聲明的同一行中賦值變量。 – 2011-03-24 19:29:24

回答

1

你的問題還不清楚。 UNIONJOIN是完全不同的東西。我們需要更多關於您的表格外觀以及您的期望結果的詳細信息。

如果您有例如

table1    table2 
| col1 | col2 | | col1 | col2 | 
|------|------| |------|------| 
| 1 | 4 | | 5 | 7 | 

結果爲UNION(僅可能的,如果表1和表2具有相同的數據類型)

SELECT col1, col2 FROM table1 
UNION 
SELECT col1, col2 FROM table2 

|------|------| 
| 1 | 4 | 
| 5 | 7 | 

結果爲JOIN

SELECT t1.col1, t1.col2, t2.col1, t2.col2 
FROM table1 t1 CROSS JOIN table2 t2 

|t1.col1|t1.col2|t2.col1|t2.col2| 
|-------|-------|-------|-------| 
| 1 | 4 | 5 | 7 | 

進一步有各種不同類型的外的 and inner JOINS 查看概覽here

1

假設通過join你不是指在sql語境中該術語的通常含義,如果你問的是sql問題,並且假設你想從這兩個表中得到結果,那麼你寫的sql如果數據庫中存在表Table1Table2並且它們都有col1和col2,則表示正確。考慮到UNION運營商默認情況下只選擇不同的值,而UNION ALL也會選擇重複。但你有錯誤:
"No value given for one or more required parameters."
似乎並不是一個SQL錯誤。它似乎是由您的編程代碼引發的,最有可能填充數據集/記錄集的地方。如果發佈更多代碼,可以提供更好的答案。

0

我認爲你需要共享你的代碼的其餘部分,它看起來像你使用這樣的事情

Dim cmd as ADODB.command 
Dim CmdStr As String = "SELECT col1, col2 FROM table1 UNION SELECT col1,col2 FROM table2" 

cmd.CommandText = cmdStr 

給我們更多的代碼,也許我們可以幫助你更好。

0

太感謝你了,在座的各位,我是absolate新的,但我覺得我可以得到它現在的工作.heres我使用的代碼

Imports System.Data.OleDb 

Public Class Form1 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\deletedb.accdb;Jet OLEDB:Database Password=1") 
     Dim CmdStr As String = "SELECT col1, col2 FROM table1 UNION SELECT col1,col2 FROM table2"   
     con.Open() 
     Dim cmd As OleDbCommand = New OleDbCommand(CmdStr, con) 
     cmd.ExecuteNonQuery() 
     con.Close() 
     MsgBox("Done") 
    End Sub 
+0

當您將代碼拆分爲段落(即當您將空行放在中間時)時,Ticks(')停止作爲標記符號工作。在這種情況下,將其格式化爲代碼塊(使用「{}」按鈕或將所有代碼行縮進至少4個空格)。 – 2011-03-21 07:05:17

0

它看起來像這個問題是你的數據源字符串。默認情況下,訪問權限有一個名爲Admin的用戶使用空白密碼。除非您已將安全性添加到數據庫,否則連接字符串應爲

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\deletedb.accdb;User ID=Admin;Password="