Coba gunakan kueri berparameter di sini adalah tautan http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
Juga, jangan gunakan OpenQuery... gunakan this untuk menjalankan pilihan
SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno
Artikel lainnya yang menjelaskan beberapa opsi Anda:
http://support.microsoft.com/kb/314520
Apa sintaks T-SQL untuk terhubung ke SQL Server lain?
Diedit
Catatan:Pertanyaan awal Anda menanyakan tentang kueri terdistribusi dan server Tertaut. Pernyataan baru ini tidak mereferensikan kueri terdistribusi. Saya hanya bisa berasumsi Anda terhubung langsung ke database sekarang. Berikut adalah contoh yang seharusnya berfungsi. Berikut adalah situs referensi lain untuk menggunakan SqlCommand.Parameters
SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con);
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;
Diedit:
Ok Jamie taylor saya akan mencoba menjawab pertanyaan anda lagi.
Anda menggunakan OpenQuery karena Anda mungkin menggunakan DB yang ditautkan
Pada dasarnya masalahnya adalah Metode OpenQuery mengambil string yang Anda tidak dapat meneruskan variabel sebagai bagian dari string yang Anda kirim ke OpenQuery.
Anda dapat memformat kueri Anda seperti ini. Notasi mengikuti servername.databasename.schemaname.tablename. Jika Anda menggunakan server yang ditautkan melalui odbc maka hilangkan nama database dan nama skema, seperti yang diilustrasikan di bawah ini
Dim conn As SqlConnection = New SqlConnection("your SQL Connection String")
Dim cmd As SqlCommand = conn.CreateCommand()
cmd.CommandText = "Select * db...table where investor = @investor"
Dim parameter As SqlParameter = cmd.CreateParameter()
parameter.DbType = SqlDbType.Int
parameter.ParameterName = "@investor"
parameter.Direction = ParameterDirection.Input
parameter.Value = 34