Prøv at bruge en parameteriseret forespørgsel her er et link http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
Brug heller ikke OpenQuery... brug dette til at køre select
SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno
Flere artikler, der beskriver nogle af dine muligheder:
http://support.microsoft.com/kb/314520
Hvad er T-SQL-syntaksen for at oprette forbindelse til en anden SQL Server?
Redigeret
Bemærk:Dit oprindelige spørgsmål var om distribuerede forespørgsler og linkede servere. Denne nye erklæring refererer ikke til en distribueret forespørgsel. Jeg kan kun antage, at du opretter direkte forbindelse til databasen nu. Her er et eksempel, der burde virke. Her er et andet referencested til brug af SqlCommand.Parameters
SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con);
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;
Redigeret:
Ok Jamie taylor, jeg vil prøve at besvare dit spørgsmål igen.
Du bruger OpenQuery, fordi du sandsynligvis bruger en linket DB
Grundlæggende er problemet, at OpenQuery-metoden tager en streng, du ikke kan sende en variabel som en del af den streng, du sendte til OpenQuery.
Du kan formatere din forespørgsel sådan i stedet. Notationen følger servernavn.databasenavn.skemanavn.tabelnavn. Hvis du bruger en linket server via odbc, så udelad databasenavn og skemanavn, som illustreret nedenfor
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