大家都进来看看,哪里错了!高分相送......

xielittle 2004-05-13 10:39:54
procedure TfrmInputManage.BtMonthClick(Sender: TObject);
var
tablename,y,m,sqlstr:string;
SL: TStrings;
index,flag: Integer;
begin
flag:=0;
SL := TStringList.Create;
y:=formatdatetime('yyyy',now);
if (strtoint(formatdatetime('mm',now))-1)<10 then
m:='0'+inttostr(strtoint(formatdatetime('mm',now)))
else
m:=inttostr(strtoint(formatdatetime('mm',now)));
tablename:=y+m;
try
DMtongtao.ADOCtongtao.GetTableNames(SL, False);
for index := 0 to (SL.Count - 1) do begin
if tablename=SL[index] then
flag:=1
end;
finally
SL.Free;
end;

if flag=1 then
showmessage('该月的入库汇总表已存在!');

DMtongtao.ADOQrkdj.Close;
DMtongtao.ADOQrkdj.SQL.Add('select * from rkdjb where SUBSTRING(rkdh,5,2)='''+m+'''');
DMtongtao.ADOQrkdj.Open;

if DMtongtao.ADOQrkdj.IsEmpty then
begin
DMtongtao.ADOQrkdj.Close;
showmessage('该月不存在入库信息!');
end
else
begin
sqlstr:='select P_code as 产品编号,P_name as 产品名,sum(P_sl) as 总数量,sum(P_sl*P_price) as 总金额 into '+tablename+' from rkdjb group by P_code,p_name order by P_code,P_name';
ADOQCreate.Close;
ADOQCreate.SQL.Add(sqlstr);
ADOQCreate.ExecSQL;
end;
ADOTable1.TableName:=tablename;
ADOTable1.Active:=true;
end;


总说第一行200405附近有错误,我是看不出来了
sql语句应该没问题,我在sql server里通过了的
...全文
41 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
internetcsdn 2004-05-13
  • 打赏
  • 举报
回复
同意upingking()

要清空sql语句.
internetcsdn 2004-05-13
  • 打赏
  • 举报
回复
搞错:

bsmqu(我是个菜鸟,但是我一直在努力想成为高手) :

SELECT ... INTO TABLENAME 是把查询得到的数据导入新表的语句,上面的SQL没有错啊.
internetcsdn 2004-05-13
  • 打赏
  • 举报
回复
楼上:


SELECT ... INTO TABLENAME 是把查询得到的数据导入新表的语句,上面的SQL没有错啊.
upingking 2004-05-13
  • 打赏
  • 举报
回复
ADOQCreate.SQL.Clear;
应该是上一句sql语句没有清空,清空试试。
bsmqu 2004-05-13
  • 打赏
  • 举报
回复
'select P_code as 产品编号,P_name as 产品名,sum(P_sl) as 总数量,sum(P_sl*P_price) as 总金额 into '+tablename+' from rkdjb group by P_code,p_name order by P_code,P_name';
这个SQL语句我怎么看都看不懂,不正确,你想把这些内容加入到更一个表中吧,要是这样却没有insert,你看哪个变量的值是200405,那么错误就在那个附近
楚人无衣 2004-05-13
  • 打赏
  • 举报
回复
你的表求的太艰难了:tblname := formatdatetime('yyyymm',now);就可以了
你判断表名是否存在也太长了:
if SL.IndexOf(tblname) >= 0 then
begin
showmessage('该月的入库汇总表已存在!');
Exit;
end;
...
ADOQCreate.Close;
ADOQCreate.SQL.Clear; {加此句试试}
ADOQCreate.SQL.Add(sqlstr);
...
Shiyl 2004-05-13
  • 打赏
  • 举报
回复
var
tablename,y,m,sqlstr:string;
SL: TStrings; <====SL :TStringList;
----------------------------------------
问题再这里
xielittle 2004-05-13
  • 打赏
  • 举报
回复
sql语句清空了问题还是一样!!!郁闷

神啊,救救我吧!!!!
sunkevin 2004-05-13
  • 打赏
  • 举报
回复
是要用sql.clear;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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