嘿,我在SQL Server 2000下的存储过程中有一个游标(现在无法更新),它更新了所有表,但通常需要几分钟才能完成.我需要让它更快.这是由任意产品ID过滤的示例表; 示例表http://img231.imageshack.us/img231/9464/75187992.jpg 而GDEPO:Entry depot,CDEPO:Exit depot,Adet:quantity,E_CIKAN使用的数量.
记录解释:
1:20单位进入仓库01,2:10单位叶01. 3:5单位叶01(E_CIKAN为第1记录现在为15)4:10单位进入仓库01. 5:3单位离开01从第1记录.请注意,现在第一条记录的E_CIKAN设置为18. 6:这就是问题所在:3个单元需要离开库01.从第1条记录开始需要2个单元,从第5条记录需要1个单元.我的SP可以处理这个如图所示的罚款,除非它真的很慢.
这是存储过程翻译成英文;
CREATE PROC [dbo].[UpdateProductDetails]
as
UPDATE PRODUCTDETAILS SET E_CIKAN=0;
DECLARE @ID int
DECLARE @SK varchar(50),@DP varchar(50) --SK = STOKKODU = PRODUCTID, DP = DEPOT
DECLARE @DEMAND float --Demand=Quantity, We'll decrease it record by record
DECLARE @SUBID int
DECLARE @SUBQTY float,@SUBCK float,@REMAINS float
DECLARE SH CURSOR FAST_FORWARD FOR
SELECT [ID],PRODUCTID,QTY,EXITDEPOT FROM PRODUCTDETAILS WHERE (EXITDEPOT IS NOT NULL) ORDER BY [DATE] ASC
OPEN SH
FETCH NEXT FROM SH INTO @ID, …Run Code Online (Sandbox Code Playgroud) 这听起来与MDI的性质背道而驰。我有时需要将MDI表单(FormStyle = fsMdiChild)显示为模态。而且我还需要访问另一个MDI表单的Application.CreateForm和OnShow事件之间的部分,即
Application.CreateForm(Form2,TForm2); // but don't set form2's visible property true.
Form2.caption:='not working example';
Form2.SomeMagicToSetVisibleTrue;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
如何buffer在以下代码中修改然后保存可执行文件资源中的更改?我正在寻找类似的东西SetString(handle,index,buffer,size).
var
hExe : Cardinal;
buffer : array [0..4097] of ansichar;
begin
hExe:=LoadLibraryEx(PAnsiChar(Edit2.Text),0,LOAD_LIBRARY_AS_DATAFILE);
LoadString(hExe,65300,buffer,SizeOf(buffer));
ShowMessage(buffer);
//need to modify buffer here then I'll unload the resources..
end;
Run Code Online (Sandbox Code Playgroud)
更新:这是我对UpdateResource的尝试
var
hEXE: DWORD;
pData: PAnsiChar;
begin
pData := PAnsiChar(Edit1.Text);
hEXE := BeginUpdateResource(pchar(edit2.text), FALSE);
if hEXE <> 0 then
begin
UpdateResource(hEXE, RT_string, MAKEINTRESOURCE(4082), LANG_NEUTRAL,
@pData, Length(pData)); //if i change 4082 to 65300 it creates another key like 4082
EndUpdateResource(hEXE, FALSE);
end;
Run Code Online (Sandbox Code Playgroud)
这段代码搞砸了整个4082内容.问题是RT_STRING中名为4082的项是字符串组.当我在资源编辑器中打开exe时,单击字符串表然后4082结果是:
STRINGTABLE
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
65296, "Unicode" …Run Code Online (Sandbox Code Playgroud) 我正在将现有的数据库驱动应用程序从D7转换为D2009,因此我将无法再使用dxGrids.有没有自动方式将dxGrid组件转换为cxGrids?如果没有,为了获得手动转换它们的时间,你会建议我什么?