如何在Delphi 5.0/6.0中建Ms Server7.0/2000的库结构?(100分)

  • 主题发起人 主题发起人 hjandy
  • 开始时间 开始时间
H

hjandy

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在Delphi 5.0/6.0中利用Ms Server产生的脚本(*.sql)动态建Ms Server7.0/2000的
库(DataBase)、表(Table)、视图(View)和处理程式(StoreProc)?

EMail: hj-andy@163.com or hjandy@21cn.com
 
没问题,直接执行就可以了。
建库:
with AdoQuery_Install do begin
Close;
SQL.Clear;
SQL.Add('Create Database para');
SQL.Add('On Primary');
SQL.Add('(Name=MyDB_Data,FileName='''+FileDir+'MyDB_Data.MDF'')');
SQL.Add('Log On');
SQL.Add('(Name=MyDB_Log,FileName='''+FileDir+'MyDB_Log.LDF'')');
Prepared; ExecSQL;
end;
 
建立数据库表
with AdoQuery_Install do begin
Close;
SQL.Clear;
SQL.Add('Create Table getpara(Col1 Char(10) Not NULL Primary Key)');
Prepared;
ExecSQL;
end;
 
此外可以执行所有系统函数,
如sp_attach_db等。。。
 
发了一个 DEMO 给你,请查收。
 
Hi yzhshi :
建库,表和用户及口令都没问超, 若然建视图将会出错
例如在AdoQuery 加入如下类似资料->Error 'Create View'Must be first statement in


use FsTestDb

CREATE VIEW dbo.vwBooksCodex(年份,月份,名册,抄表日,水厂编号,用户编号,用户名称,水表位置,电话号码,上期用水,停表否)
AS
SELECT D.OfYear, D.OfMonth, LEFT(D.Cust_id, 2) Book_id, CustPrefix.CopyDate, D.UserCode,
D.Cust_id, D.Cust_Name, MeterLoc.Description LocationName, C.Phone, D.LastMeterQty,
D.FlagStop
FROM MonthDosage D LEFT OUTER JOIN
Customer C ON (D.UserCode = C.UserCode) LEFT OUTER JOIN
(SELECT M.UserCode, L.Description
FROM Customer M LEFT OUTER JOIN
Location L ON (M.Loc_id = L.Loc_id)) AS MeterLoc ON
(MeterLoc.UserCode = D.UserCode) LEFT OUTER JOIN
(SELECT C.UserCode, P.CopyDate
FROM Customer C LEFT OUTER JOIN
Prefix P ON (C.Prefix_id = P.Prefix_id)) AS CustPrefix ON
(CustPrefix.UserCode = D.UserCode)
WHERE (D.Paid = 0) AND (IsDate(D.NowCopyDate) = 0 or D.FlagStop = 1) AND (D.NowMeterQty - D.LastMeterQty) <= 0
 
Sorry!! Modified as below

Hi yzhshi :
建库,表和用户及口令都没问题, 若然建视图将会出错
例如在AdoQuery 加入如下类似资料->Error 'Create View'Must be first statement in query batch.

use FsTestDb

CREATE VIEW dbo.vwBooksCodex(年份,月份,名册,抄表日,水厂编号,用户编号,用户名称,水表位置,电话号码,上期用水,停表否)
AS
SELECT D.OfYear, D.OfMonth, LEFT(D.Cust_id, 2) Book_id, CustPrefix.CopyDate, D.UserCode,
D.Cust_id, D.Cust_Name, MeterLoc.Description LocationName, C.Phone, D.LastMeterQty,
D.FlagStop
FROM MonthDosage D LEFT OUTER JOIN
Customer C ON (D.UserCode = C.UserCode) LEFT OUTER JOIN
(SELECT M.UserCode, L.Description
FROM Customer M LEFT OUTER JOIN
Location L ON (M.Loc_id = L.Loc_id)) AS MeterLoc ON
(MeterLoc.UserCode = D.UserCode) LEFT OUTER JOIN
(SELECT C.UserCode, P.CopyDate
FROM Customer C LEFT OUTER JOIN
Prefix P ON (C.Prefix_id = P.Prefix_id)) AS CustPrefix ON
(CustPrefix.UserCode = D.UserCode)
WHERE (D.Paid = 0) AND (IsDate(D.NowCopyDate) = 0 or D.FlagStop = 1) AND (D.NowMeterQty - D.LastMeterQty) <= 0

 
嘿嘿,问道弱点上来了,我没有实验过建立视图、存储过程。呵呵。
我实验一下吧,如果成功,我会发帖子的。
 
没问题呀,直接Create成功!
with AdoQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('CREATE VIEW VIEW2');
SQL.Add('AS');
SQL.Add('SELECT TABLE1.*');
SQL.Add('FROM TABLE1');
ExecSQL;
实现使用SQL管理器建立视图,然后双击视图,将内容复制出来,在删除视图,在Query里面执行。
一切OK呀。
end;
 
zhihuali 您好!
我仅收到install.exe,执行出错 cannot create file c:/winnt/data.txt
 
Sorry!!
若然连接的库(ADOConnection1 connect)是master,但要在另外一个库中建视图
是否会Error 'Create View'Must be first statement in query batch

with AdoQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('use 库');
SQL.Add('CREATE VIEW VIEW2');
SQL.Add('AS');
SQL.Add('SELECT TABLE1.*');
SQL.Add('FROM TABLE1');
ExecSQL;
 
你的use库,这个就不行了。
使用 AdoConnection.DefaultDatabase:='master'来进行更改,然后再CreateView。
 
yzhshi: 若然同时建两个以上视图, 行吗?
 
嘿嘿,执行两次不就行了吗?[:)][:D][:)]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
614
import
I
后退
顶部