Probeer een geparameteriseerde query te gebruiken, hier is een link http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
Gebruik ook geen OpenQuery... gebruik dit om de selectie uit te voeren
SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno
Meer artikelen die enkele van uw opties beschrijven:
http://support.microsoft.com/kb/314520
Wat is de T-SQL-syntaxis om verbinding te maken met een andere SQL Server?
Bewerkt
Opmerking:uw oorspronkelijke vraag ging over gedistribueerde zoekopdrachten en gekoppelde servers. Deze nieuwe instructie verwijst niet naar een gedistribueerde query. Ik kan alleen maar aannemen dat u nu rechtstreeks verbinding maakt met de database. Hier is een voorbeeld dat zou moeten werken. Hier is een andere referentiesite voor het gebruik van SqlCommand.Parameters
SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con);
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;
Bewerkt:
Ok Jamie Taylor, ik zal proberen je vraag opnieuw te beantwoorden.
U gebruikt OpenQuery omdat u waarschijnlijk een gekoppelde database gebruikt
Het probleem is eigenlijk dat de OpenQuery-methode een string neemt die je niet kunt doorgeven aan een variabele als onderdeel van de string die je naar OpenQuery hebt gestuurd.
U kunt uw query in plaats daarvan als volgt opmaken. De notatie volgt servernaam.databasenaam.schemanaam.tabelnaam. Als u een gekoppelde server via odbc gebruikt, laat dan databasenaam en schemanaam weg, zoals hieronder geïllustreerd
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