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

这样写 SQL 对不对? 找管家婆破解软件下载

库存管理软件版1楼: type
sqlOfNamse=array[0..2] of string;
qryOfarray=array[0..2] of TQuery;
ROfarray=array of array of array of Double;

//写一个过程,如下:
=====================
procedure aAVG(var r:ROfarray);
var
i,j,si:integer;
qry:qryOfarray;
ss,s1,s2:string;
const
na:sqlOfNamse=(''rr01'',''rr02'',''rr03'');
begin
s1:=''select*from '';
s2:='' where 年代>=1960'';
for si:=0 to 2 do
begin
qry[si]:=TQuery.Create(nil);
qry[si].DatabaseName:=''hlber'';
qry[si].Close;
qry[si].SQL.Clear;
ss:=s1+na[si]+s2;
qry[si].SQL.Add(ss);
qry[si].ExecSQL;
qry[si].Open;
qry[si].First;

//提取数据库中的各个表中的数据赋值给变量r[j,i,si]
setlength(r,12,qry[si].RecordCount,3];
if qry[si].IsEmpty then
begin
for i:=0 to qry[si].RecordCount-1 do
begin
for j:=0 to 11 do
begin
r[j,i,si]:=qry[si].Fields[j+1].AsFloat;
end;
qry[si].Next;
end;
end;
qry[si].free;
end;
end;
==========

1、这个程序能编译过去,调用aVAG()的时候,只是r的存储值有问题。
2、我是觉得SQL 可能有问题?
3、这样写SQL对不对?

2楼: SQL的问题,如果你是Application的话,可以单步跟踪一下,把SQL打印出来再到DB Server里面执行一下,这样可以确定是不是SQL的问题了.

一般也都是这样调试的.. 如进销存免费版

3楼: qry[si].ExecSQL;
qry[si].Open;

4楼: 這樣對結構處理過於複雜。面對對象處理也不像。

5楼: na:sqlOfNamse=(''rr01'',''rr02'',''rr03'');//<<=其实,这里还有好多数据表;不然我就不这样做了!还有
{...................}
s1:=''select*from '';
s2:='' where 年代>=1960'';
{...................}
ss:=s1+na[si]+s2;
qry[si].SQL.Add(ss);
{..................}
这样做应该可以的吧!
to bbscom
==>>這樣對結構處理過於複雜。面對對象處理也不像。
我做的这个过程的目的,无非就是想取得数据库中数据表的数据;至于像不像面向对象,暂且不提,看看我的这个做法对不对!能不能取得预期效果!

6楼: 不對。


要在過程裡以形參的方式傳送才是對的。

库存管理软件版7楼: s1:=''select*from '';
這句就有點問題應該修改成s1:=''select * from '';
如果你得年代字段是字符類型的話請改成s2:='' where 年代>=''+''''''1960''''''

8楼: to delphisuccess
>>如果你得年代字段是字符類型的話請改成s2:='' where 年代>=''+''''''1960''''''
我的“年代 ”字段是整型数据;不是字符串!
============
to bbscom
>>>要在過程裡以形參的方式傳送才是對的。
我试试你说的!

9楼: to bbscom
你说的形参传递,是不是这样:
-----------------------
procedure aAVG(r:ROfarray);
{....................}

10楼: qry[si].ExecSQL;改为
qry[si].Open;
s1:=''select*from '';
改为
s1:=''select * from '';
太复杂了

11楼: 问题我自己解决了!是这个问题:
setlength(r,12,qry[si].RecordCount,3];
应该放在第一个循环之外(即for si:=0 to 2 do);不然,每循环一次刷新一次setleng();因此,数组就得不到正确值了!而SQL的写法没有问题。这样写非常简练的!
呵呵。

12楼: 学习。.. 如管家婆破解软件下载

13楼: 结贴了!分配分数。
good!