Forum Discussion

MarceloSilva5_'s avatar
MarceloSilva5_
Frequent Visitor
4 years ago
Solved

How to pass a empty parameter in URL filter query string

Hello i have a question:

I created this query:

 

(Name as text,datetimestart as text, datetimeend as text, listzones as text, listaps as text, listdevices as text, listuserprops as text, topreg as text) as table =>

let
    Source = Csv.Document(Web.Contents("https://localhost:44310/api/Emp?Name=" & Name & "&datetimestart=" &  datetimestart & "&datetimeend=" & datetimeend & "&listzones=" & listzones & "&listaps=" & listaps & "&listdevices=" & listdevices & "&listuserprops=" & listuserprops & "&topreg=" & topreg &  ""),[Delimiter=":", Encoding=65001, QuoteStyle=QuoteStyle.None])
in
    Source

 

In total i have 8 parameters and i need to pass to the URL some empty parameters like "listdevices and listuserprops"
But when i try to do it i receive the message "Please specify a value for listuserprops"



 

Is there a way to pass a empty parameter and how  ?


Thanks!!!


 

  • Anonymous's avatar
    Anonymous
    4 years ago

    Hi MarceloSilva5_ ,

    Please try to update the codes of parameter listdevices and listuserprops as below and check if it can work or not:

     

    null meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=false]

     

    And you can get the details of query parameter in the following links.

    Creating Dynamic Parameters in Power Query

    Best Regards

4 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi MarceloSilva5_ ,

    Please try to update the codes of parameter listdevices and listuserprops as below and check if it can work or not:

     

    null meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=false]

     

    And you can get the details of query parameter in the following links.

    Creating Dynamic Parameters in Power Query

    Best Regards

    • MarceloSilva5_'s avatar
      MarceloSilva5_
      Frequent Visitor

      My Stored procedure :

       

      if (@Name = 'UniqueVisits')
                  begin
                        set @BaseQuery = 'select count(distinct fp.device_id) as NVisits from f_presence fp '
      
      				  if (@listzones is not null)
      				  begin
      					--set @includeap = 1
      					set @QueryFilter = @QueryFilter + ' and coalesce(fp.zone_id,-1) in (' + @listzones + ')'   
      				  end
      
      				  if (@listaps is not null)
      					set @QueryFilter = @QueryFilter + ' and coalesce(fp.ap_id,-1) in (' + @listaps + ')'
      
      				  
      
                        set @QueryFilter = ' WHERE ((fp.datetime_start < ' + cast(@datetimeend as nvarchar(12)) + ' and fp.datetime_end > ' + cast (@datetimestart as nvarchar(12)) + ') OR fp.datetime_start = ' +  cast (@datetimestart as nvarchar(12)) + ')' + @QueryFilter 
                        
                        if (@includedevice = 1)
      						set @TablesJoin = @TablesJoin + ' inner join l_device ld on ld.device_id = fp.device_id '
      						
      				  --if (@includeap = 1)
      						--set @TablesJoin = @TablesJoin + ' inner join l_accesspoint lap on lap.ap_id = fp.ap_id '
                        
                        if (@includesession = 1)
                              set @TablesJoin = @TablesJoin + ' inner join f_session fs on fs.presence_id = fp.presence_id and ((fs.datetime_start <'+ cast(@datetimeend as nvarchar(12)) + ' and fs.datetime_end > ' + cast (@datetimestart as nvarchar(12)) + ') OR fs.datetime_start = ' +  cast (@datetimestart as nvarchar(12)) + ')'
                        
                        if (@includeappsession = 1)
                              set @TablesJoin = @TablesJoin + ' inner join f_applicationsession fapps on fapps.session_id = fs.session_id and fapps.datetime_start < ' + cast(@datetimeend as nvarchar(12)) + ' and fapps.datetime_start >= ' + cast (@datetimestart as nvarchar(12))
                              
                        if (@includeuserproperty = 1)
                              set @TablesJoin = @TablesJoin + ' inner join (' + @listuserprops + ') as lup on lup.aleuser_id = fs.user_id '

       

      If I change to Dynamic Parameters . I always got this error i am not sure if is the power by  or the API i never saw anything like that

      Error:

       My api :

       

      public string getStudentDetails(string Name,Int64? Datetimestart, Int64? Datetimeend, string Listzones, string Listaps, string Listdevices, string Listuserprops, int? Topreg)
              {
                  SqlConnection myConnection = new SqlConnection();
                  myConnection.ConnectionString = "Data Source=DESKTOP-R7QRMCV;Initial Catalog=DW_NSA;Integrated Security=True;TrustServerCertificate=true";
                  SqlCommand sqlCmd = new SqlCommand();
                  sqlCmd.CommandType = CommandType.StoredProcedure;
                  sqlCmd.CommandText = "GetMeasures2";
                  sqlCmd.Connection = myConnection;
                  sqlCmd.Parameters.AddWithValue("@Name", Name);
                  sqlCmd.Parameters.AddWithValue("@datetimestart", Datetimestart);
                  sqlCmd.Parameters.AddWithValue("@datetimeend", Datetimeend );
                  sqlCmd.Parameters.AddWithValue("@listzones", Listzones);
                  sqlCmd.Parameters.AddWithValue("@listaps", Listaps);
                  sqlCmd.Parameters.AddWithValue("@listdevices", Listdevices);
                  sqlCmd.Parameters.AddWithValue("@listuserprops", Listuserprops);
                  sqlCmd.Parameters.AddWithValue("@topreg", Topreg);
                  SqlDataAdapter sda = new SqlDataAdapter(sqlCmd);
                  DataSet ds = new DataSet();
                  string jsonString = string.Empty;
                  myConnection.Open();
                  sda.Fill(ds);
                  myConnection.Close();
                  if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                  {
                      jsonString = JsonConvert.SerializeObject(ds.Tables[0]);
      
                  }
                  return jsonString;
              }