当前位置:主页>销售管理软件> 列表

散分贴,愿帮助新手编写SQL语句或存储过程,5分一行!

进销存管理软件版1楼: 本人愿帮助新手编写SQL语句和存储过程。
为不让您不好意思和对我的谢意,
SQL语句5分一行!30分起价!
请把需求及数据库结构贴到这里或发往本人信箱:cheyz@126.com
“货”到再付分!

2楼: 哈哈,行呀,老大,还可以这样赚分的[:D] 如erp软件

3楼: to:lichengbin
谢谢夸奖!
如老兄乐意学用,请支付本点子专利授权:33分。谢谢!

4楼: 帮看看我的贴子呀

5楼: to::孤雪,
你的帖子:
问题:大家帮我看看这个SQL语句怎么会有错 ( 积分:50, 回复:18, 阅读:134 )
分类:数据库-C/S型 ( 版主:qince, luyear )
来自:孤雪, 时间:2005-9-27 23:57:00, ID:3221225 [显示:小字体 | 大字体]

insert into ZS_PAY(CODE,NAME,JOIN_DATE,MONTH,total_hour)
SELECT CODE,NAME,JOIN_DATE,MONTH, sum(output_hour) as total FROM ZS_BILL
WHERE MONTH=:month AND CODE=:code
group by CODE,NAME,JOIN_DATE,MONTH

出错的根源你自己还是没找到。
关键在于 MONTH 上,应当这样写:

insert into ZS_PAY(CODE,NAME,JOIN_DATE,[MONTH],total_hour)


SELECT CODE,NAME,JOIN_DATE,[MONTH], sum(output_hour) as total FROM ZS_BILL
WHERE [MONTH]=:month AND CODE=:code
group by CODE,NAME,JOIN_DATE,[MONTH]

凡是关键字、函数名,不要当作字段名!

6楼: 我也愿意帮助新手写,10分一行。

进销存管理软件版7楼: 送分, yzxcsw进来, http://www.delphibbs.com/delphibbs/dispq.asp?lid=3222914

8楼: 生财有道

9楼: yzxcsw兄,帮我看看这问题呢?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3222944

10楼: 我也可以写,价格面议,哈哈!!

11楼: 你们都是牛人,居然这么赚分。果然是不同凡响啊

12楼: to sydan:
已回复,请验证一下。 如软件项目管理

13楼: CREATE PROCEDURE GetNextPicID(
@TableName varchar(15),
@PackAgeNO varchar(4),
@TyperID varchar(4),
@TypeOrder varchar(2),
@PicID int output ) with recompile

AS

declare @STRSQL varchar(2000)

set @STRSQL = '' declare tmpcur cursor for select '' +
'' max(文件序号) PicID from '' + @TableName + '' where [一打员]='' + @TyperID +


'' and 包号='' + @PackAgeNO + '' and 文件序号 <'' + convert( varchar(8), @PicID )
-- print @STRSQL

exec (@STRSQL)
open tmpcur
fetch next from tmpcur into @PicID
close tmpcur
deallocate tmpcur

if @PicID is null set @PicID=0


/*
在查询分析器中执行 是没有问题的
declare @pic_id int
set @pic_id = 4
exec getnextpicid ''pic_1'', ''1'',''10'',''1'', @pic_id output
print @pic_id
*/
GO

上面是我的存储过程 在查询分析器里 调用是没有问题的 , 但在DELPHI中调用,提示游标不存在
请帮忙!(按你的规则给分,也可更高!)

进销存管理软件版14楼: to:VGA
我简化了一下,执行没有问题,你再看看,是否delphi调用时有什么不妥:
CREATE PROCEDURE GetNextPicID(
@TableName varchar(15),

@PicID int output ) with recompile

AS

declare @STRSQL varchar(2000)

set @STRSQL = '' declare tmpcur cursor for select '' +
'' max(xh) PicID from '' + @TableName
-- print @STRSQL



exec (@STRSQL)
open tmpcur
fetch next from tmpcur into @PicID
close tmpcur
deallocate tmpcur

if @PicID is null set @PicID=0
GO

delphi调用:
procedure TForm2.Button4Click(Sender: TObject);
var n:integer;
begin
with ADOQuery1 do
begin
active:=false;
sql.Clear;
sql.Text:=''exec getnextpicid :@tbname,:@pic_id output''; //注意调用格式,有output才能有返回值
Parameters.ParamByName(''@tbname'').Value:=''stu_student'';
Parameters.ParamByName(''@pic_id'').Value:=0;
ExecSQL;
n:=Parameters.Parambyname(''@pic_id'').Value;
ShowMessage(IntToStr(n));
end;
end;

15楼: 谢谢您,yzxcsw。
我是这样写的代码用 SQLQuery (dbexpress)
procedure TForm1.Button3Click(Sender: TObject);
begin
with SQLQuery1 do
begin
Params.Clear;
Params.CreateParam(ftString, ''@tablename'', ptInput);
Params.CreateParam(ftString, ''@PackAgeNO'', ptInput);


Params.CreateParam(ftString, ''@TyperID'', ptInput);
Params.CreateParam(ftString, ''@TypeOrder'', ptInput);
Params.CreateParam(ftInteger, ''@Pic_ID'', ptOutput);

Params.ParamByName(''@tablename'').AsString := ''pic_1'';
Params.ParamByName(''@TyperID'').AsString := ''1'';
Params.ParamByName(''@PackAgeNO'').AsString := ''1'';
Params.ParamByName(''@TypeOrder'').AsString := ''1'';
Params.ParamByName(''@Pic_ID'').AsString := ''4'';

sql.Text:=
''Exec GetNextPicID :@tablename, :@PackAgeNO, :@TyperID, :@TypeOrder, :@pic_id output'';
SQLQuery1.ExecSQL();
caption:=IntToStr(Params.Parambyname(''@pic_id'').Value);
end;
end;

// 使用 TSQLStoredProc (Dbexpress)
procedure TForm1.Button2Click(Sender: TObject);
begin
with SQLStoredProc1 do
begin
Params.Clear;
StoredProcName := ''GetNextPicID'';

SchemaName:=''dbo'';

Params.CreateParam(ftInteger, ''RETURN_VALUE'', ptOutput);
Params.CreateParam(ftString, ''@tablename'', ptInput);
Params.CreateParam(ftString, ''@PackAgeNO'', ptInput);
Params.CreateParam(ftString, ''@TyperID'', ptInput);
Params.CreateParam(ftString, ''@TypeOrder'', ptInput);
Params.CreateParam(ftInteger, ''@PicID'', ptOutput);

Params.ParamByName(''@tablename'').AsString := ''pic_1'';
Params.ParamByName(''@TyperID'').AsString := ''1'';
Params.ParamByName(''@PackAgeNO'').AsString := ''1'';
Params.ParamByName(''@TypeOrder'').AsString := ''1'';
Params.ParamByName(''@PicID'').AsString := ''4'';

ExecProc;
caption := Params.ParamByName(''@PicID'').AsString;
end;
end;

这两种方法都无法工作!
显示“SQL. State:3400, Sql Error Code16916”
不知错在哪里,怎样写才对?

16楼: 我也来个跳楼低价,一行1分

17楼: fausten大侠, 看看上面我的程序,该怎么写呀?(可以给200-300分)

18楼: 无言中.....


大富翁之不幸还是幸甚?!

19楼: 各位大峡,我是新手,我有很多问题,不过这个怎么给你分数啊,是我给打分么?分数有什么用处呢?

20楼: 我还是来,我不要分,愿意的就发到我的油箱 528cc@163.com

进销存管理软件版21楼: to:VGA
我没有用过SQLQuery ,可能和ADOQUERY用法相似吧?
在ADOQUERY中,
不需要:
Params.CreateParam(ftInteger, ''@Pic_ID'', ptOutput);

只用:
Params.ParamByName(''@tablename'').value:= ''pic_1'';

见我给的示例。

对于ADOSTOREDPROC,
则需要 Params.CreateParam(……);
不过调用方式和你用的控件不同。

22楼: 请教activex 控件问题 想用activex 做个画图板的 程序 就想程序附件中自带的哪个画图板一样 只要求画时出现笔的形状 可以改变粗细、任意写字 !就这点功能 其他的就不要了

也可以用form做!就是 用delpji做一个上述要求的画图板 大哥可以帮帮我吗? 如用友u8财务软件下载

23楼: 兄弟,帮我写一个sql语句:
我的一个access数据表, 表名为:aaa 有10万条记录
我想分页查询数据,每一页100条数据:我在网上找一个,但查到后面的数据时.查询就会好慢,.请你帮我写一个查询速度快的语句

24楼: to::wwwone
你找的那个分页查询的是什么?控件吗?请发个来瞧瞧!