我正在研究SSRS 2008中的Tablix,并希望我的列自动调整(仅限宽度)到其内容.CanGrow只影响身高.是否有我缺少的属性或以其他方式装配列来执行此操作?
我是第一次使用SSRS.将表添加到报表时,有没有办法立即将数据集的所有字段添加到其中,还是必须单独完成?拖放,插入列 - >当有很多字段显示时,右边是一个痛苦.
我使用了一些不同的X12标准EDI交易(270/272,276/277.)我想在我开始自己开始工作之前,我会检查是否有人知道Notepad ++的现有语法突出显示配置文件.
我正在撰写SSRS 2008报告.我有一个非常简单的报告,其中包含三个表,每个表都有不同的数据集/ tablix(显示相同的字段).我将PageBreak.BreakLocation设置为End的前两个 - 我希望这三个单独显示.用户将直接导出到Excel.
当所有三个集合都有数据时,它可以正常工作,并且在Excel导出中它会在适当命名的三个表格中显示它们.当一个人没有数据时,它不会强制执行分页符.因此,如果只有我的第三个数据集有数据......前面的两个数据集显示在它上面,只清空行标题,与第三个数据集相同,这是唯一一个导出的数据集.
我希望强制执行分页符,即使这三个集合中没有任何数据也是如此.我可以使用NoRowsMessage明确指出没有数据,但我仍然需要单独的选项卡.有关如何实现这一目标的任何想法?
请考虑以下代码:
private string _text = null;
private string[] _values = null;
public string Text { get { return _text; } }
public string[] Values { get { return _values; } }
Run Code Online (Sandbox Code Playgroud)
如果仅仅让公众成员不这样做,这又取得了什么成果呢?
考虑这些数据:
CREATE TABLE #Data (DataID INT, Code VARCHAR(2), Prefix VARCHAR(3))
INSERT INTO #Data (DataID, Code)
VALUES (1, 'AA')
, (2, 'AA')
, (3, 'AA')
, (4, 'AA')
, (5, 'AA')
, (6, 'AA')
CREATE TABLE #Prefix (Code VARCHAR(2), Prefix VARCHAR(3))
INSERT INTO #Prefix (Code, Prefix)
VALUES ('AA', 'ABC')
, ('AA', 'DEF')
, ('AA', 'GHI')
, ('AA', 'JKL')
Run Code Online (Sandbox Code Playgroud)
我想设置的Prefix
中值#Data
是随机Prefix
从#Prefix
与匹配Code
.
使用直接inner join
只会导致使用一个值:
UPDATE D
SET Prefix = P.Prefix
FROM #Data …
Run Code Online (Sandbox Code Playgroud) 我使用WatiN自动化文件传输(EDI事务)到/从多个网站,不幸的是FTP或任何更自动化友好不是一个选项.对于下载,我使用此示例的变体:
FileDownloadHandler download = new FileDownloadHandler(fullFilename);
using (new UseDialogOnce(ie.DialogWatcher, download))
{
lnkFile.ClickNoWait();
download.WaitUntilFileDownloadDialogIsHandled(15);
download.WaitUntilDownloadCompleted(150);
}
Run Code Online (Sandbox Code Playgroud)
这很好用,唯一的问题是它需要专注.有几十个文件要下载可能需要一段时间才能完成,这并不罕见.我在一个远程会话中运行它,所以我的机器不能用,但如果有任何方法可以消除对焦的需要,那就方便了.
我有以下查询:
SELECT I.InsuranceID
FROM Insurance I
INNER JOIN JobDetail JD ON I.AccountID = JD.AccountID
WHERE I.InsuranceLookupID IS NULL
AND JD.JobID = 28
Run Code Online (Sandbox Code Playgroud)
它大约在一秒钟内执行。当用作子查询时如下:
IF EXISTS(
SELECT I.InsuranceID
FROM Insurance I
INNER JOIN JobDetail JD ON I.AccountID = JD.AccountID
WHERE I.InsuranceLookupID IS NULL
AND JD.JobID = 28
)
SELECT 1
ELSE
SELECT 0
Run Code Online (Sandbox Code Playgroud)
需要 90 秒。据我了解, EXISTS 应该优化为在找到第一条记录后停止。为什么这需要更长的时间?
我正试图在某个地方设置一些东西DataGridView
.看起来这应该很简单,但我遇到了麻烦.我想显示三列:
我希望能够从所有可能的值中进行选择TypeName
.这是我的困境:
如果我将所有这些加载到一个DataTable
并设置DataGridView
为DataSource
,我可以显示该TypeName
记录的现有,但组合框将不包括任何其他值.如果我将DataSource
for 设置为包含所有可能DataGridViewComboBoxColumn
的单独的DataTable
,TypeNames
则不显示现有值.
DataGridView
真的很烦人,所以无论是解决方案还是可行的替代方案都将受到赞赏.
编辑:看来这个问题是我想有一个单独的项目引起的DisplayMember
和ValueMember
.以下工作,如果我不担心设置ID
为ValueMember
:
var typeColumn = new DataGridViewComboBoxColumn
{
DataSource = typeList,
DisplayMember = "Type",
ValueMember = "Type",
DataPropertyName = "Type"
}
Run Code Online (Sandbox Code Playgroud)
如果我执行以下操作,则会选择正确的类型,但我无法更改组合框中的选择:
var typeColumn = new DataGridViewComboBoxColumn
{
DataSource = typeList,
DisplayMember = "Type",
ValueMember = "TypeID",
DataPropertyName = "TypeID"
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下内容FormatException
,则会出现错误,因为它正在尝试填充: …
我正在尝试使用 C# 创建一个 Access 文件 (.mdb)。我正在从 SQL 导出数据以用于遗留过程。我让它工作了,我面临的唯一问题是将列设置为可为空。
这是我所拥有的(为简洁起见,删除了大多数列):
private void CreateAndExportLegacyFile(DataTable data, string exportFilename)
{
var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;";
connectionString += "Data Source=" + exportFilename + ";Jet OLEDB:Engine Type=5";
var catalog = new Catalog();
catalog.Create(connectionString);
var table = new Table { Name = "Main" };
#region Column mapping
table.Columns.Append("ID", DataTypeEnum.adVarWChar, 50);
table.Columns.Append("FIRST", DataTypeEnum.adVarWChar, 50);
table.Columns.Append("LAST", DataTypeEnum.adVarWChar, 50);
#endregion
foreach (Column column in table.Columns)
{
if (column.Name != "ID") column.Properties["Nullable"].Value = true;
}
catalog.Tables.Append(table);
Marshal.FinalReleaseComObject(table);
Marshal.FinalReleaseComObject(catalog.Tables);
Marshal.FinalReleaseComObject(catalog.ActiveConnection);
Marshal.FinalReleaseComObject(catalog);
}
Run Code Online (Sandbox Code Playgroud)
尝试设置“Nullable”属性时出现以下错误:“在与请求的名称或序号相对应的集合中找不到项目。” …
我正在尝试使用存储过程来接受日期的多值参数.这不是在SSRS中,但我试图使用与它相同的方法:
ALTER PROCEDURE spSelectPlacementData
(
@ClientID SMALLINT,
@SourceFileDates VARCHAR(MAX)
)
AS
BEGIN
SELECT (snip)
FROM [APS].[dbo].[Account] A
WHERE ClientID = @ClientID
AND A.[SourceFileDate] IN (SELECT * FROM dbo.Split(@SourceFileDates))
END
Run Code Online (Sandbox Code Playgroud)
我在SSRS报告多值参数上使用此方法和INT和VARCHAR字段.
这是我用来连接SourceFileDates的代码:
string sourceFileDates = "";
foreach (DateTime file in job.sourceFiles)
{
if (file == job.sourceFiles.Last())
{
sourceFileDates += "'" + file.ToString("d") + "'";
}
else
{
sourceFileDates += "'" + file.ToString("d") + "', ";
}
}
selectRunCommand = new SqlCommand("spSelectPlacementData", sqlConnection);
selectRunCommand.CommandType = CommandType.StoredProcedure;
selectRunCommand.Parameters.Add("@ClientID", SqlDbType.SmallInt);
selectRunCommand.Parameters["@ClientID"].Value = job.clientID;
selectRunCommand.Parameters.Add("@SourceFileDates", …
Run Code Online (Sandbox Code Playgroud) 假设我有以下bool:
当isA,isB或isC为真时,如果所有真正的bool'对应的isExisting bools也是如此,我想做点什么.如果isA,isB或isC为false,则其对应的isExisting bool无关紧要.
这是我想出的:
if ((isA || isB || isC)
&& ((!isA || isExistingA)
&& (!isB || isExistingB)
&& (!isC || isExistingC)))
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
我显然今天想不到,并且想知道是否有更简单的方法来表达这一点.
我有一个存储过程,根据某些结果返回0或1.我经常手动执行这个程序,所以为了描述在SSMS中容易查看但在代码中仍然可读为0/1的成功/失败的描述,我选择0或1作为不同的列名,即SELECT 0 AS ThisReason
或SELECT 0 AS ThatReason
.
几乎可以肯定有更好的方法来解决这个问题,但它让我很好奇 - 在C#中使用ExecuteScalar时,是否可以读取你选择的列的名称?
c# ×7
t-sql ×4
ssrs-2008 ×3
.net-4.0 ×1
adox ×1
automation ×1
boolean ×1
comparison ×1
data-binding ×1
datagridview ×1
datatable ×1
download ×1
edi ×1
exists ×1
focus ×1
jet ×1
notepad++ ×1
oledb ×1
parameters ×1
random ×1
sql ×1
sql-server ×1
watin ×1
width ×1
winforms ×1
x12 ×1