我有两张桌子.indRailType
包含与我在其他表中使用的ID值配对的名称列表,以指示导轨类型.WO_BreakerRail
包含日期列和轨道代码列,对应于相同的代码indRailType
和其他一些数据.WO_BreakerRail
对于每个日期,每种铁路类型的任何活动都有一排.所以我可以有3行日期3/19/2010
,每行表示不同的轨道代码,以及发生了什么.
当我使用以下内容时LEFT OUTER JOIN
,我得到一个包含所有类型轨道的表,在19行中没有任何事情发生的行中有空值.现在,这只是起作用,因为我现在只有一个日期表示在我的WO_BreakerRail
表中,即19日.当我添加更多具有不同日期的行时,事情会变得混乱.
这是我的SQL语句,它现在给出了我想要的结果:
SELECT WO_BreakerRail.ID, indRailType.RailType, WO_BreakerRail.CreatedPieces,
WO_BreakerRail.OutsideSource, WO_BreakerRail.Charged,
WO_BreakerRail.Rejected, WO_BreakerRail.RejectedToCrop
FROM indRailType
LEFT OUTER JOIN WO_BreakerRail
ON indRailType.RailCode = WO_BreakerRail.RailCode
Run Code Online (Sandbox Code Playgroud)
现在,当我添加一个WHERE WO_BreakerRail.Date = @Date
子句时,我会丢失所有JOIN
没有发生的行.我不希望这样.从阅读起,听起来像是OUTER JOIN
我想要的全部,但SQL Server Compact Edition不支持FULL OUTER JOIN
s.有没有办法解决这个问题,还是我正在寻找其他的东西?
SELECT WO_BreakerRail.ID, indRailType.RailType, indRailType.RailCode, WO_BreakerRail.CreatedPieces, WO_BreakerRail.OutsideSource, WO_BreakerRail.Charged, WO_BreakerRail.Rejected, WO_BreakerRail.RejectedToCrop, WO_BreakerRail.Date
FROM indRailType LEFT OUTER JOIN
WO_BreakerRail ON indRailType.RailCode = WO_BreakerRail.RailCode AND WO_BreakerRail.Date = @date
Run Code Online (Sandbox Code Playgroud)
返回时,Date列中有NULL值,其中没有来自WO_BreakerRail的匹配行.有没有办法用@date替换那些NULL值?
static void Main()
{
Application excelapp = new Application();
Workbook book = excelapp.Workbooks.Open(@"C:\HWYFAB.xlsx",
0, false, 5, "", "", false, XlPlatform.xlWindows , "",
true, false, 0, true, false, false);
Worksheet sheet = (Worksheet)book.Sheets[1];
Range cell = (Range)sheet.Cells[3, 2];
Console.WriteLine(cell.Text);
cell.ClearContents();
book.Close(true, "HWYFAB.xlsx", false);
excelapp.Quit();
}
Run Code Online (Sandbox Code Playgroud)
该程序按预期运行和退出.它会将单元格B3中的正确值打印到控制台.关闭它时询问我是否要替换现有文件.我点击是.当我在Excel中打开电子表格时,尽管有cell.ClearContents(),但该值仍然在单元格B3中.
有什么想法吗?
我有一个绑定到DataSet的DataGridView.它有DateCreated,Weight,DateUsed列.这三列不占用几乎全屏的DataGridView上的水平空间.如果视图足够宽以支持第二组这些列,是否可以将这些列回绕到顶部.因此,在标题中,它将显示DateCreated,Weight,DateUsed,DateCreated,Weight,DateUsed.然后,当单击一行时,只会突出显示3个单元格,而不是全部六个单元格.有什么东西可以提供这种功能吗?
我有一个简单的折线图,我已经添加了数据标签:
但我不想要所有这些标签.我只希望显示顶部和底部10%(任意数字)值.例如,在图片中我只想要显示51,54,57,61,66,68,74的标签.我可以手动删除其他标签,但图表数据会随时间动态变化.有没有办法实现这个目标?这些标签中的文本现在是一个占位符,最终将长达6-10个字符,此时所有这些标签将完全混乱.
我对VBA并不是很自信,所以我只想依靠它作为最后的手段.
编辑:感谢Scott的深刻回答.它与手动填充的数据标签列完美配合.但是,如果想要动态填充它,就需要一些陪审团操纵.我使用以下公式填充它:
=IF(OR(O1=LARGE($O$1:$O$30,1),O1=LARGE($O$1:$O$30,2),O1=LARGE($O$1:$O$30,3)),O1,"")
Run Code Online (Sandbox Code Playgroud)
基本上,如果O中的值是列表中的第1个,第2个或第3个值,它会将单元格值从列O复制到列P. 如果它不是任何一个,它将单元格留空.但即使单元格在视觉上是空白的,如果单元格中有公式,Excel的图表功能会将值解释为0.这意味着图表的整个底部都有重复的数据标签"0%".为了解决这个问题,我将FALSE参数的值设置为负数,然后将图表上的最小值从自动更改为0.这会将不合适的值保留在图表底部之下,超出可见范围.
excel ×2
join ×2
.net ×1
c# ×1
charts ×1
datagridview ×1
interop ×1
null ×1
outer-join ×1
sql ×1
sql-server ×1
winforms ×1