这段代码win2000server下正常,win98下出错,何解

harabi 2003-08-21 05:39:41
//--------------------------
TreeView2.Items.Clear; { remove any existing nodes }
zlink.ADOQueryMYB.SQL.Clear;
zlink.ADOQueryMYB.SQL.Text:= 'select * from bulletin where state = '+''''+'已发布'+''''+' and ztime between ' +''''+ datetostr(date-7) +''''+' and '+''''+ datetostr(date)+'''';
//showmessage(zlink.ADOQueryMYB.SQL.Text);
zlink.ADOQueryMYB.Open;
zlink.ADOQueryMYB.First;
MYTN1:=zmain.TreeView2.Items.Add(nil,'最近发布的公告');

while not zlink.ADOQueryMYB.Eof do
begin
//########################
new(p);
p^:= zlink.ADOQueryMYB.FieldByName('id').AsString;

MYTN2:=zmain.TreeView2.Items.AddChildObject(MYTN1,zlink.ADOQueryMYB.FieldByName('title').AsString,p);
myTN2.ImageIndex:=3;
mytn2.SelectedIndex:=5;

zlink.ADOQueryMYB.Next;
end;
treeview2.Selected:=MYTN2;
...全文
44 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
俗人1979 2003-08-22
  • 打赏
  • 举报
回复

     zlink.ADOQueryMYB.SQL.Clear;
     zlink.ADOQueryMYB.Close;
zlink.ADOQueryMYB.SQL.Text:= 'select * from bulletin where state = '''+已发布+''' and ztime between '''+ datetostr(date-7) +''' and '''+ datetostr(date)+''';
//showmessage(zlink.ADOQueryMYB.SQL.Text);
zlink.ADOQueryMYB.Open;
zlink.ADOQueryMYB.First;

如果还是不行,建议把ADOQuery控件换成ADODataSet控件,因为Win98有时对ADOQuery不支持,而
ADODataSet是专门的数据集控件,比较稳定,执行SQL的增、删、改则用ADOCommand控件,效果不错。
wjowner 2003-08-22
  • 打赏
  • 举报
回复
lxpbuaa(桂枝香在故国晚秋) 的说法应该是对的,把DateTimeToString中的日期格式改成数据库服务器的日期格式再试试
harabi 2003-08-22
  • 打赏
  • 举报
回复
没办法,加分!!!!!!!!!!!
harabi 2003-08-22
  • 打赏
  • 举报
回复
还是不行呀,都试过了
harabi 2003-08-22
  • 打赏
  • 举报
回复
我现在知道问题的根源了
win98那台机上,得出的日期是'02-8-22',改成2003年就行了
谢谢各位了
lxpbuaa 2003-08-21
  • 打赏
  • 举报
回复
问题应该就在:
zlink.ADOQueryMYB.SQL.Text:= 'select * from bulletin where state = '+''''+'已发布'+''''+' and ztime between ' +''''+ datetostr(date-7) +''''+' and '+''''+ datetostr(date)+'''';
这里了,极可能是两台机子上的日期显示格式不统一,改成这样试试:
var
R1,R2: String;
begin
//……
DateTimeToString(R1, 'YYYY-MM-DD', Date-7);
DateTimeToString(R2, 'YYYY-MM-DD', Date);
zlink.ADOQueryMYB.SQL.Text:= 'select * from bulletin where state = '+ QuotedStr('已发布') + ' and ztime between ' + QuotedStr(R1) + ' and ' + QuotedStr(R);
//……
end;

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
swayi21 2003-08-21
  • 打赏
  • 举报
回复
var
s: string;
begin
s := 'select * from bulletin where (state = ''%s'')'
+ ' and (ztime between ''%s'' and ''%s'')';
s := Format(s, ['已?布', datetostr(date-7), datetostr(date)]);
ShowMessage(s);
end;

這應該是你要的。
MichealLee 2003-08-21
  • 打赏
  • 举报
回复
!!!
这段sql没有问题。

错误不在这里。
zlink.ADOQueryMYB.Open;//先要关闭。

改动如下:
...
zlink.ADOQueryMYB.Close;//先要关闭。
zlink.ADOQueryMYB.Open;//再打开
...
swayi21 2003-08-21
  • 打赏
  • 举报
回复
你有ShowMessage(zlink.ADOQueryMYB.SQL.Text)看看你寫的是不是你要的。

zlink.ADOQueryMYB.SQL.Text:= 'select * from bulletin where state = '+''''+'已发布'+''''+' and ztime between ' +''''+ datetostr(date-7) +''''+' and '+''''+ datetostr(date)+'''';

肯定不對啦。
自己再檢查檢查,或者放到查詢分析器里去修改一下。
yujohny 2003-08-21
  • 打赏
  • 举报
回复
zlink.ADOQueryMYB.SQL.Text:= 'select * from bulletin where state = '''已发布''' and ztime between '''+ datetostr(date-7) +''' and '''+ datetostr(date)+'''';
harabi 2003-08-21
  • 打赏
  • 举报
回复
程序的其他地方也用到p,就没出错
各位看看是不是这里的问题

zlink.ADOQueryMYB.SQL.Text:= 'select * from bulletin where state = '+''''+'已发布'+''''+' and ztime between ' +''''+ datetostr(date-7) +''''+' and '+''''+ datetostr(date)+'''';

因为另一个地方的代码就这点不同,但是运行没问题
mysqlcom 2003-08-21
  • 打赏
  • 举报
回复
p定义的是记录形吗?希望下面的代码对你有用。

type
ptest=^TMytest;
TMyTest=record
FTestID:string;//试题号
FTestType:string;//试题类型,1单,2多,3填空,4判断
FTestEasy:string;//难易程度
FIsHaving:string; //是否是此试卷中的试题
FLevelID:string;//试卷参数号
end;


//添加科目名称
Procedure TFrm_handPaper.AddSubject;
var
StrSql:string;
thisNode,NowNode:TTreeNode;
rs:_recordset;
addParam:PMyRec;
begin
DataModAll.ADOQuery1.Connection:=DataModAll.ADOConnection1 ;
strSql:='select * from n_subject';
with DataModAll.ADOQuery1 do begin
close;
sql.Clear;
sql.Add(strSql);
open;
end;
rs:=DataModAll.ADOQuery1.Recordset;
DataModAll.ADOQuery1.close;
if not rs.EOF then begin
with treeView1.items do begin
clear;
new(addParam);
addParam^.FSubject:='-1';
addParam^.FPaperLevel :='-1';
addParam^.FPaperNoID :='-1';
thisNode:=AddObject(nil,'试卷管理',addParam);
thisNode.ImageIndex:=0;
thisNode.Expanded:=true;
while not rs.eof do begin
new(addParam);
addParam^.FSubject:=rs.Fields['subject_id'].Value ;
addParam^.FPaperLevel :='-1';
addParam^.FPaperNoID :='-1';
NowNode:=addChildObject(thisNode,rs.Fields['subject_name'].value,addParam);
NowNode.ImageIndex:=1;
//添加试卷参数号
addPaperLevel(NowNode,rs.Fields['subject_id'].Value);
//
rs.MoveNext;
end;
rs:=nil;
end;
end
else begin
//没有数据,退出
messageBox(handle,'没有科目信息','系统提示',mb_ok+mb_iconWarning);
treeView1.Enabled:=false;
RzCheckTree1.Enabled:=false;
exit;
end;
end;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧