将下拉列表中的选定值传递给MSSQL查询

时间:2019-04-18 13:12:11

标签: javascript node.js sql-server express ejs

我对Node还是很陌生,只是尝试编写一个简单的应用程序,该应用程序从mssql查询中填充了2个下拉列表,当我单击Submit时,相应的数据应显示在下一页上。

更多详细信息...

我有两个.ejs页,{index.ejsselection.ejs)。下拉菜单属于index.ejs,我希望能够从两个下拉列表NameDate中选择项目,然后点击 Submit (提交)按钮。然后,该页面会将我转到selection.ejs页,并根据所选条件显示7列的表格。

router.js

router.get('/', async (req, res) => {
  try {
    var name = await conn.query("SELECT DISTINCT pr.Name FROM WFS.PRTABLE pr WHERE pr.Functional_Group = 'Test'");
    var dates = await conn.query('SELECT r.Date FROM WFS.Dates r');
    res.render('index', {name : name , dates: dates});
      } catch (err) {
        res.status(500)
        res.send(err.message)
      }
  });


router.get('/selection', async (req, res) =>{
  try {
    var name = await conn.query("SELECT DISTINCT pr.Name FROM WFS.PRTABLE pr WHERE pr.Group = 'Test'");
    var dates = await conn.query('SELECT r.Date FROM WFS.Dates r');

    var dateID = req.body.Dates;
    var nameID = req.body.Names;

    var tables = await conn.query("SELECT * FROM WFS.Views v WHERE v.Name = ? AND v.Date = ?", [ nameID , dateID ], function(err){
    if(err) throw err;
       res.render('selection', {tables: tables, name : name , dates: dates});
       });
    } 
      catch (err) {
        res.status(500)
        res.send(err.message)
    }
 });

index.ejs

 <select class="DateDD" id="selection" name="Dates">
      <% for(var n=0; n < dates.recordset.length; n++) { %>
           <option><%= dates.recordset[n].Date%></option>
      <% } %>
  </select>
  <select class="NameDD" id="selection" name="Names">
      <% for(var n=0; n < name.recordset.length; n++) { %>
           <option><%= name.recordset[n].Name%></option>
      <% } %>
   </select>
<input type="submit" name="Submit" id="submitData" class="btn btn-primary" value="View Report" />

selection.ejs

包含与INDEX.EJS相同的内容...

<table class="table table-bordered table-condensed table-striped">
    <% for(var n=0; n < tables.recordset.length; n++) { %>
        <tr>
            <td><%=tables.recordset[n].Name%></td>
            <td><%=tables.recordset[n].Date%></td>
             ....
             ....
             ....
             ....
        </tr>
    <% } %>
    </table>

我一直收到此错误'?'附近的语法不正确。不知道是什么原因引起的。我要做的就是将下拉列表中的所选名称和日期作为我的WHERE子句传递到查询中,并相应地在selection.ejs上呈现数据。

0 个答案:

没有答案