我有像这样的SQL案例声明
select Distinct y.SupplierID,y.Name,y.AddWho ,
"StatusDesc=CASE when y.status='N' then 'NEW' " & _
"when y.status='B' then 'BLACKLISTED'" & _
"when y.status='Q' then 'QUALIFIED'" & _
"when y.status='R' then 'REJECTED' end , " & _
"FlowStatusDesc = CASE when y.flowstatus='RC' then 'UNDER REVIEW'" & _
"when y.flowstatus='PE' then 'POTENTIAL EXCLUSIVE'" & _
"when y.flowstatus='PO' then 'POTENTIAL ORDINARY' ELSE '' end," & _
"OrderNo=case when y.status='N' and flowstatus='' then '1'" & _
"when y.status='N' and y.flowstatus<>'' then '2' " & _
"when y.status='R' and y.flowstatus='' then '3'" & _
"when y.status='R' and y.flowstatus<>'' then '4'" & _
"when y.status='Q' and y.flowstatus='' then '5'" & _
"when y.status='Q' and y.flowstatus<>'' then '6'" & _
"when y.status='B' and y.flowstatus='' then '7'" & _
"when y.status='B' and y.flowstatus<>'' then '8' else '9' end " & _
"from AP_Supplier y" & _
" left outer join SC_User u on y.addwho=u.userid " & _
"left outer join SC_Company co on co.companycode=u.companycode " & _
"where flowstatus is not null " & _
"group by y.SupplierID,y.name,y.status,y.flowstatus,y.addwho " & _
"order by orderno"
如果我可以加载所有case语句条件,如“new”,“qualified”,“registered”和flowstatuses到vb.net上的组合框?你能给我一个例子吗?我试过这样做很长一段时间。谢谢。
答案 0 :(得分:0)
有很多方法可以做到这一点,第一种方法是从列表中填充组合框。在这种情况下,你应该有一个类,如:
public class Status(){
public string Symbol { get; set; } // or Id
public string Name { get; set; }
}
然后是您拥有的状态列表:
var ds = new List<Status>(){
new Status { Symbol = "N", Name = "New" },
new Status { Symbol = "Q", Name = "Qualified" },
....
};
然后,您可以使用以下两个属性轻松地从此列表中填充combox:
像这样:YourcomboboxName.DataSource = ds;
YourcomboboxName.ValueMember = "Symbol";
YourcomboboxName.DisplayMember = "Name";
第二种方法是使用表或临时表,包含这些值列表,如下所示:
CREATE TABLE Statuses(StatusId INT,
StatusSymbol VARCHAR(2),
StatusName VARCHAR(20));
INSERT INTO Statuses(StatusId, StatusSymbol, STatusName) VALUES
(1, 'N' , 'NEW'),
(2, 'B' , 'BLACKLISTED'),
(3, 'Q' , 'QUALIFIED'),
(4, 'R' , 'REJECTED'),
(5, 'UR', 'UNDER REVIEW'),
(6, 'PE', 'POTENTIAL EXCLUSIVE'),
(7, 'PO', 'POTENTIAL ORDINARY');
然后,您可以在使用从此表读取并填充它的数据源之前以相同的方式使用它。但是这个解决方案将使您的查询更容易。您可以JOIN
使用此表格如下:
SELECT DISTINCT
y.SupplierID,
y.Name,
y.AddWho,
StatusDesc = s.STatusName,
FlowStatusDesc = CASE WHEN ... END
orderno = CASE WHEN ...
FROM AP_Supplier y
INNER JOIN statuses s ON y.status = s.StatusSymbol
LEFT JOIN SC_User u ON y.addwho = u.userid
LEFT JOIN SC_Company co ON co.companycode = u.companycode
WHERE flowstatus IS NOT NULL
GROUP BY y.SupplierID,
y.name,
y.status,
y.flowstatus,
y.addwho
ORDER BY orderno;
请注意:您的表格如果可能需要重构,最好摆脱这些状态名称,并使用id为Statuses
的新表格第二个表中的外键。