0

好吧,我在这里滚动了一段时间,现在我只是卡住了。我写了一个查询来为我的 DataGridView 获取一些数据,然后想出了一个更短的查询来替换它。出于某种原因,在我更改了选择查询后,我无法再编辑 datagridview 控件中的单元格。唯一的区别是,我没有选择我需要编辑的列的整个表(ITEM表或i),而是选择了一个不同的表并将 ITEM 表连接到它。

ITEM.Amount [Payment]是我需要编辑的列。我可以在第一个但不是第二个查询中编辑它。. .

工作查询:

select ct.[Employee]
, cT.[Employee ID]
, cT.[Case Number]
, cT.[Usual Payment]
, cT.[Scheduled Ded.]
, i.amount [Payment]
, i.Paycard_Date [Paycard Date]
, i.ID [item_id]
, i.modified [iMod]
from dbo.Item i
right join

(select 
    case(ISNULL(e.middle_name,'99'))
    when '99' then e.First_Name + ' ' + e.Last_Name
    else (e.First_Name + ' ' + e.Middle_Name + ' ' + e.Last_Name)
    end as Employee
, e.Number [Employee ID]
, c.number [Case Number]
, c.weekly_payment [Usual Payment]
, c.payment_balance [Scheduled Ded.]
, s.Agency [Source]
, c.modified [cMod]
, e.modified [eMod]
, s.modified [sMod]
, c.ID
from tCase c
inner join Employee e
on e.ID = c.ID_Employee
inner join Source s
on s.ID = c.ID_Source) as cT
on cT.ID = i.ID_Case

非工作查询:

declare @paycard_date datetime
set @paycard_date = '1/10/2013'

select (isnull(e.First_Name,'') + ' ' + ISNULL(e.Middle_Name,'') + ' ' + ISNULL(e.Last_Name, '')) [Employee]
, e.Number
, c.Number
, c.Weekly_Payment
, c.Payment_Balance
, ISNULL(i.amount,'') [Payment]
, s.Agency
, isnull(i.Created,'') [created]
, isnull(i.Modified,'') [modified]
, ISNULL(i.ID,'') [Item ID]
from tcase c
inner join Employee e
on e.ID = c.ID_Employee
inner join Source s
on s.ID = c.ID_Source
left join 
(select * 
from item i
where paycard_date = @paycard_date) as i
on i.id_case = c.ID

重申一下,这两个查询都有效,但“无效”查询不允许我编辑 ITEM.Amount [Payment] 列。我假设这是因为无法通过 DGV 控件编辑连接的表/列,但我不确定。一旦用户退出edit-cell-mode ,我添加了我的 VB.net 代码来更新数据,但如果用户无法进入edit-cell-mode开始它并没有多大用处。

编辑: 我将尝试解释我要完成的工作。例如,假设我有 100 个案例文件。这些存储在 tCase 表中。这些案件跟踪员工薪水的扣押。实际的扣押扣款存储在Item表中。每周,对于每种情况,用户都需要向下查看列表并添加(或编辑)该周的项目。在创建项目之前(即,直到它不再是 $0 金额),项目表中显然不存在该项目的行。这意味着查看新一周的数据实际上不会显示任何内容,而编辑旧一周的数据将忽略零数量。

因此,我编写的查询通过提取每个 Case 条目并左连接以下子表来解决问题:

(select * 
from item i
where paycard_date = @paycard_date) as i

所以我的新问题是......我是否应该重新考虑我提取这些数据的方法,或者是否可以编辑 DataGridView 中的列,即使该列被拉为子表?

4

0 回答 0