Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: VB.NET
I facing Problem on pass the Parameter on WHERE Clause IN On VB.NET site
I have a Function below:
 
Public Function getProjectDS(ByVal ProjectID As String) As DataSet
 
Dim cmd As New SqlCommand
cmd.Connection = con
cmd.CommandText = "SELECT * FROM Project WHERE ProjectID IN (@ProjectID)"
cmd.Parameters.Add("@ProjectID", SqlDbType.VarChar).Value = ProjectID
 
Dim ds As New DataSet
Dim da As New SqlDataAdapter(cmd)
 
da.Fill(ds)
 
Return ds
 
End Function
 
I like to get list Project Detail as in MSSQL Query as below:
SELECT * FROM Project WHERE ProjectID IN ('PFP','PSB','PSK')

 
I can not get same result as MSSQL Query if i use Function getProject("PFP,PSK,PSB")
just get nothing.
But if i use Function getProject("PFP") it only get me Project On ProjectID PFP Details.
 

I needed to help on Passing parameter ON WHERE CLAUSE IN On VB.net Site
Posted 11-Nov-12 17:01pm
pthsoon593

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

You can't do that. What you actually sent to the SQL server was this:
SELECT * FROM Project WHERE ProjectID IN ("'PFP', 'PSB', 'PSK'")
You didn't send a list of items, you sent a single string. Essentially the same as sending
 ... WHERE ProjectID IN ('I SENT THIS SINGLE, STRING NOT A LIST')
 
You can't directly send a list to SQL Server in the IN clause. Read this[^] for a possible alternate method.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 686
1 OriginalGriff 345
2 CPallini 200
3 PIEBALDconsult 150
4 Magic Wonder 131
0 OriginalGriff 5,795
1 Sergey Alexandrovich Kryukov 5,028
2 CPallini 4,700
3 George Jonsson 3,142
4 Gihan Liyanage 2,450


Advertise | Privacy | Mobile
Web01 | 2.8.140916.1 | Last Updated 11 Nov 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100