2014-12-02 114 views
0

我想用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:未给出一个或多个必需参数的值。

+0

您能不能告诉执行'db.Query'的? – Vlad 2014-12-02 08:07:50

+0

db = Database.Open(“nameofdb”); – 2014-12-02 08:11:35

+1

是属性'transakcioni.IDKlientit'总是'!= null'? – webber2k6 2014-12-02 08:13:59

回答

1

@ 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*属性都是可空的时候才有意义,我猜这是关于你得到的错误信息的情况。

0

你的代码修复程序没有工作,但你的建议做到了!

我处理“时,其空”,现在它的作品我多么希望

这是我做过什么:

@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> 
     }} 
+0

什么都不起作用? Linq似乎更优雅,在foreach循环内部进行'null'检查。 – Askolein 2014-12-05 13:18:49