我用存储过程来调用,但是报错
cannot perform this operator on a close dataset
但是我的数据集是打开的啊
还有什么原因吗?
我在formActivate中写了这些语句
dataform.StoredProc1.Edit;
dataform.StoredProc1.Last;
dataform.StoredProc1.Next;
我是想要添加记录的,但首先dbedit得在编辑状态,还有就是要在最后一条记录
请问怎么解决,用LOCATE好像不行
cannot perform this operator on a close dataset
但是我的数据集是打开的啊
还有什么原因吗?
我在formActivate中写了这些语句
dataform.StoredProc1.Edit;
dataform.StoredProc1.Last;
dataform.StoredProc1.Next;
我是想要添加记录的,但首先dbedit得在编辑状态,还有就是要在最后一条记录
请问怎么解决,用LOCATE好像不行
解决方案 »
- 用listView显示范例数据库??
- 不知道能否实现这样的功能伪造消息的功能没?
- 用户要求按回车后按钮跳转到下一个控件,可是一按回车,对话框就退出了?
- 请问各位大侠,哪里可以找到VCL的源程序代码??
- 我现在使用richedit控件,我想控件中的字有些是红色的,有些是黑色的,这样行不行?
- DLL调用问题,请大家帮帮我啊!!
- 在Install Shield中加IE的快捷方式
- 很简单的问题:关于ADOTABLE的连接。
- 三层技术问题,不熟悉三层模式的同仁可以看一看?
- 怎样用Delphi来截取Windows的API函数Textout.
- 春节来临之际,祝各位大侠 百事可了,万事OK!准备方分400!
- 小问题急死人,帮忙看看
你可能在调用“存储过程”时引用了其他DATASET的内容作为参数。
而这个表当时没有打开 ,所以会报错
在做以下操作时必须使“dataform.StoredProc1”处于AVTIVATE 的状态
dataform.StoredProc1.Edit;
dataform.StoredProc1.Last;
dataform.StoredProc1.Next;
写完才发现你要在存储过程中EDIT!!!
它和QUERY不同
QUERY可以对一个表返回的数据直接EDIT
但存储过程不行
可以看看“存储过程”和“query”的差别
可以写具体点吗?
有代码最好
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
========================================
program get_ip;
uses
winsock,sysutils;
VAR
ch : ARRAY[1..32] OF Char;
i : Integer;
WSData: TWSAData;
MyHost: PHostEnt;
begin
IF WSAstartup(2,wsdata)<>0 THEN
BEGIN
Writeln('can''t start Winsock: Error ',WSAGetLastError);
Halt(2);
END;
try
IF getHostName(@ch[1],32)<>0 THEN
BEGIN
Writeln('getHostName failed');
Halt(3);
END;
except
Writeln('getHostName failed');
halt(3);
end;
MyHost:=GetHostByName(@ch[1]);
IF MyHost=NIL THEN
BEGIN
Writeln(GetHostName('+StrPas(@ch[1])+') failed : Error
'+IntToStr(WSAGetLastError));
Halt(4);
END
ELSE
BEGIN
Write('address ');
FOR i:=1 TO 4 DO
BEGIN
Write(Ord(MyHost.h_addr^[i-1]));
IF i<4 THEN
then write('.')
ELSE
writeln;
END;
END;
end.
我还不知道你到底要做什么呢,
怎么会有代码?
你只要用一个QUERY来取代你的存储过程返回结果
并且把QUERY的“REQUESTLIVE”的属性设为TRUE
就可以把它当作TABLE来EDIT了
不过这个方法只对返回针对一个表查询的结果有效
不能改动多个表的返回结果