主题:DELPHI+SQL+EXCL,有酬劳,求教了!
jhb0586
[专家分:0] 发布于 2007-09-16 20:17:00
求教,我们部门有这么一需求,各个客户端都可以建立一个EXCL文件,输入一些数据,最后保存的时候要把EXCL转换成一个表(表的字段是动态的)保存到服务器上,下次如果有谁根据表名查询的时候,又能从数据库转换成EXCL,并且锁定(就是第一个打开表的人有修改权限),后面的人只能只读,就这么个简单的实现,可偶实现不了,现在求教网络达人,有一点报酬(500元),表心意!先谢谢
回复列表 (共2个回复)
沙发
linjipeng0 [专家分:220] 发布于 2007-09-17 14:56:00
我用的是adoquery和adostoreproc
存储过程如下
Create proc InFromExcel
@table_name nvarchar(1000)=Null,
@sql nvarchar(1000)=Null
As
declare @sql1 nvarchar(1000)
begin
if exists(select * from sysobjects where id=object_id(N'[dbo].['+@table_name+']')
and objectproperty(id,N'IsUserTable')=1)
begin
Set @Sql1='drop table '+ @table_name
exec sp_executesql @sql1
end
exec sp_executesql @sql
end
GO
procedure TForm1.SpeedButton5Click(Sender: TObject);
var
I: Integer;
sqltemp,sqltemp1,sqltemp2,table_name:string;
begin
if not Qry1.Active then Exit;
table_name:=InputBox('输入表名','','u_excel');
if table_name='' then
begin
Application.MessageBox('请输入要保存的表的名称 !','信息',MB_ICONINFORMATION+MB_OK);
Exit;
end;
for I := 0 to DBGrid1.FieldCount-1 do // Iterate
begin
sqltemp1:=sqltemp1+'['+DBGrid1.Fields[i].FullName+'],';
sqltemp:=sqltemp+'['+DBGrid1.Fields[i].FullName+'] varchar(1000),';
end; // for
sqltemp1:=Copy(sqltemp1,1,Length(sqltemp1)-1);
sqltemp:=Copy(sqltemp,1,Length(sqltemp)-1);
sqltemp:='Create table '+Trim(table_name)+' (id varchar(10),'+sqltemp+')';
//建立表
with SP1 do
begin
Close;
ProcedureName:='InFromExcel;1';
Parameters.Refresh;
Parameters.ParamByName('@table_name').Value:=Trim(table_name);
Parameters.ParamByName('@sql').Value:=sqltemp;
ExecProc;
Close;
end; // with
//导入数据
Qry1.First;
while not Qry1.Eof do
begin
with Qry2 do
begin
sqltemp2:='';
for I := 0 to Qry1.FieldCount - 1 do // Iterate
begin
sqltemp2:=sqltemp2+''''+Qry1.Fields[i].AsString+''',';
end; // for
sqltemp2:=Copy(sqltemp2,1,Length(sqltemp2)-1);
Close;
SQL.Clear;
SQL.Add('insert into u_excel(id,'+sqltemp1+') ');
SQL.Add('values ('+''''+Edit1.Text+''','+sqltemp2+')');
ExecSQL;
end; // with
Qry1.Next;
end; // while
Application.MessageBox('成功导入到SQL Server 2000中 !','信息',MB_ICONINFORMATION+MB_OK);
end;
//希望对你有帮助
板凳
hanzhijun402 [专家分:3690] 发布于 2007-09-18 16:34:00
联系我:QQ:317383432(注明:Programfan)
我来回复