尝试在查询中查询,但它不起作用

本文关键字:查询 不起作用 | 更新日期: 2023-09-27 18:32:55

我正在尝试用来自SQL的数据填充一个表,我必须在查询中查询才能获得预期的结果。

这是我尝试的方式:

// Queries
var transakcionet = db.Query("SELECT * FROM Ditari WHERE IDUrdheresa = @0", ID);
// IDKlientit has unique value so the below query will always return one row
var klienti = "SELECT cEmertimi_i_klientit FROM Klienti WHERE (IDKlientit = @0)";

<tbody>
@foreach(var transakcioni in transakcionet){
   <tr>
      // This works
      @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
         <td>@kontoja.cNumri_i_kontos</td>
      }
      // This is what is causing the error (i guess)
      @foreach(var klja in db.Query(klienti, transakcioni.IDKlientit)){
         <td>@klja.cEmertimi_i_klientit</td>
      }
   </tr>
</tbody>

我不知道我错过了什么,但是。

以下是错误消息:

没有为一个或多个必需参数提供值。

说明:执行当前 Web 请求期间发生未经处理的异常。请查看堆栈跟踪,了解有关错误及其在代码中起源位置的详细信息。

异常详细信息:System.Data.OleDb.OleDbException:没有为一个或多个必需参数提供值。

尝试在查询中查询,但它不起作用

@webber2k6是对的。给Query一些空的东西.

首先,确保它不会崩溃(您可能需要在文件顶部@using System.Linq):

@foreach(var transakcioni in transakcionet.Where(t => t.IDKontos != null && t.IDKlientit != null){
<tr>
    // This works
    @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
        <td>@kontoja.cNumri_i_kontos</td>
    }
    // This is what is causing the error (i guess)
    @foreach(var klja in db.Query(klienti, transakcioni.IDKlientit)){
        <td>@klja.cEmertimi_i_klientit</td>
    }
</tr>

但这并不能解释为什么首先null该值。显然,只有当这些ID*属性可为空时,这才有意义,我想,您收到的错误消息就是这种情况。

您的代码修复不起作用,但您的建议起作用了!

处理了"当它为空时",现在它按照我想要的方式工作

这是我所做的:

@foreach(var transakcioni in transakcionet){
  <tr>
     @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
             <td>@kontoja.cNumri_i_kontos</td>
         }
    @if(transakcioni.IDKlientit == null){
        <td>No name</td>
    }else {
            foreach(var kli in db.Query(klienti, transakcioni.IDKlientit)){
            <td>@kli.cEmertimi_i_klientit</td>
        }}