我需要调用一个存储过程,给它一个报告id(int)并让它更新一个带有确认号(varchar)的报告表(确认#在存储过程中生成)并返回确认号(我将需要它将其返回到Web服务/网站).
我的存储过程代码:
DECLARE PROCEDURE [dbo].[spUpdateConfirmation]
@ReportID int
AS
BEGIN
Declare @Confirmation varchar(30) = replace(replace(replace(convert(varchar(16),CURRENT_TIMESTAMP,120),'-',''),' ',''),':','')+convert(varchar(24),@ReportID)
PRINT @Confirmation
UPDATE Report
SET Confirmation = @Confirmation
WHERE ReportID = @ReportID;
RETURN @Confirmation
END
Run Code Online (Sandbox Code Playgroud)
我对存储过程的调用:
execute [spUpdateConfirmation] 2
Run Code Online (Sandbox Code Playgroud)
我在表中确认已插入值但是我收到此错误消息:
2013050219072
(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)
消息248,级别16,状态1,过程spUpdateConfirmation,第12行
varchar值'2013050219072'的转换溢出了一个int列.
'spUpdateConfirmation'过程尝试返回NULL状态,这是不允许的.将返回状态0.
问题:我做错了什么?
我理解溢出是什么,对于int来说值太大了,但是我使用了convert to varchar,insert to table column typevarchar(30)
我还在SQL中测试了这个语句,它运行正常:
print replace(replace(replace(convert(varchar(16),CURRENT_TIMESTAMP,120),'-',''),' ',''),':','')+convert(varchar(24),2)
Run Code Online (Sandbox Code Playgroud)
它返回:2013050219162
这是我到目前为止找到文件夹中所有日志文件的代码.但我需要能够在每个文件中找到一个特定的字符串,如果它在一个文件中找到,停止查找并退出循环并报告它所在的文件名.
似乎有很多不同的方法来打开文件并搜索它我不知道哪个是最好的,我通常不使用VBA但是我现在只能访问它.
另外,最多可以有36个日志文件,每个文件最多5MB.
Sub StringExistsInFile()
Dim TheString As String
TheString = "MAGIC"
Dim StrFile As String
StrFile = Dir("c:\MyDownloads\*.log")
Do While Len(StrFile) > 0
'Find TheString in the file
'If found, debug.print and exit loop
Loop
End Sub
Run Code Online (Sandbox Code Playgroud)
我找到了这个代码,但似乎在2007 +版本的Excel VBA Application.FileSearch被淘汰了:
Sub FindText()
'http://www.mrexcel.com/forum/excel-questions/68673-text-file-search-excel-visual-basic-applications.html
Dim i As Integer
'Search criteria
With Application.FileSearch
.LookIn = "c:\MyDownloads" 'path to look in
.FileType = msoFileTypeAllFiles
.SearchSubFolders = False
.TextOrProperty = "*MAGIC*" 'Word to find in this line
.Execute 'start search
'This loop …Run Code Online (Sandbox Code Playgroud) 您好我正在尝试使用此代码将每张Excel保存到新工作簿.但是,它将整个工作簿保存为新文件名
Dim path As String
Dim dt As String
dt = Now()
path = CreateObject("WScript.Shell").specialfolders("Desktop") & "\Calendars " & Replace(Replace(dt, ":", "."), "/", ".")
MkDir path
Call Shell("explorer.exe" & " " & path, vbNormalFocus)
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets 'SetVersions
If ws.name <> "How-To" And ws.name <> "Actg_Prd" Then
ws.SaveAs path & ws.name, xlsx
End If
Next ws
Run Code Online (Sandbox Code Playgroud)
什么是快速解决方案?
我在stackoverflow上找到了关于在创建工具条时使用的标准图标的位置以及在工具条中"插入标准项目"(如新建,打印,剪切,粘贴等)时的VS-2010_Location.
但也许这已经改变了VS 2012,因为我无法找到这些图标.你在哪里找到VS 2012中的图标?
Ruby的新手.接收错误:未定义的方法`+'表示nil:NilClass(NoMethodError)
我不明白为什么我收到一个增加值的简单任务的错误.但是,错误可能是由其他原因造成的.
原因是什么?
class LinkedList
class Node
attr_accessor :data, :nextNode
def initialize(data = nil, nextNode = nil)
@data = data
@nextNode = nextNode
end
end
#member variables
@head = nil
@size = 0
def initialize
@head = Node.new()
end
def add(val)
curr = @head
while curr.nextNode != nil
curr = curr.nextNode
end
curr.nextNode = Node.new(val)
@size += 1 #<<<-------------------------------------ERROR LINE----------
end
end
list = LinkedList.new()
list.add(0)
Run Code Online (Sandbox Code Playgroud) 我需要在报告表中返回尚未处理的所有报告的列表.我正在使用存储过程进行此过程.
这是我的存储过程创建:
CREATE PROCEDURE spGetAllUntouchedReportID
@ReportID int OUTPUT
AS
BEGIN
SELECT @ReportID=Report.ReportID
FROM Report
WHERE Report.Status IS NULL
END
Run Code Online (Sandbox Code Playgroud)
这就是我调用存储过程的方式:
DECLARE @ReportID int
EXECUTE spGetNextReportID
@ReportID OUTPUT
Print @ReportID
Run Code Online (Sandbox Code Playgroud)
本质上,一个C#应用程序将连接并获取结果集,但我正在使用该调用来测试它.我的问题是对存储过程的调用只打印它找到的最后结果.
以下是报告表的示例集:
ReportID Status
1 NULL
2 Incomplete
3 NULL
Run Code Online (Sandbox Code Playgroud)
打印出来的程序打印出:
3
Run Code Online (Sandbox Code Playgroud)
代替:
1
3
Run Code Online (Sandbox Code Playgroud)
如何让我的存储过程存储从存储过程返回的集合并调用它来打印每个存储过程?这可能会出现在其他存储过程中,我需要执行具有多个列并需要返回整个集合的Select*
这可以直接复制并粘贴到excel模块中并运行
问题出在 AddCalendarMonthHeader() 中。月份单元格应该合并、居中和样式,但事实并非如此。我唯一的想法是 Main() 中的 range.offset() 正在影响它,但我不知道为什么或如何修复它。

Public Sub Main()
'Remove existing worksheets
Call RemoveExistingSheets
'Add new worksheets with specified names
Dim arrWsNames() As String
arrWsNames = Split("BDaily,BSaturday", ",")
For Each wsName In arrWsNames
AddSheet (wsName)
Next wsName
'Format worksheets columns
For Each ws In ThisWorkbook.Worksheets
If ws.name <> "How-To" Then
Call ColWidth(ws)
End If
Next ws
'Insert worksheet header
For Each ws In ThisWorkbook.Worksheets
If ws.name <> "How-To" Then
Call AddSheetHeaders(ws, 2013)
End If
Next ws
'Insert calendars …Run Code Online (Sandbox Code Playgroud) 有没有快速告诉Beyond Compare忽略我的比较中的.svn文件夹?在Jboss Devloper Subclipse插件中为我的java代码生成的.svn文件夹中只有区别,这似乎是唯一让我头疼的东西显示出一堆红色文件夹.
我喜欢 XmlSerialize 的工作方式,如此简单和优雅,并且具有属性 =p 但是,在序列化为 xml 文件之前构建所有对象的集合时,我遇到了内存不足问题。
我正在从 SQL 数据库填充一个对象,并打算使用 XmlSerialize 将该对象写入 XML。它适用于小子集,但如果我尝试从数据库中获取所有对象,则会遇到内存不足异常。
XmlSerialize 是否有某种功能可以让我从数据库中抓取 100 个对象的批次,然后写入它们,抓取下一批 100 个对象并附加到 xml?
我希望我不必陷入 XmlDocument 或需要更多手动编码工作的东西......
SQL小提琴如下:
create table tbl( col1 int, col2 int, col3 int);
insert into tbl values(1,1,1);
insert into tbl values(1,1,1);
select sum(col1) c1, sum(col2) c2, sum(col3)c3
from tbl
where not exists (
select 2 as c1, 2 as c2, 2 as c3
)
Run Code Online (Sandbox Code Playgroud)
我希望这会返回0条记录.相反,它返回1个空值记录.你能告诉我为什么吗?
Ps我试图理解不存在的行为.