procedure TServer.SaveList(ValuesList: OleVariant; Flag: Integer);
var
i,J:integer;
FoldName :string;
FldType, FldSize,FldCaption:string;
SQLtemp,s:string;
IniFile,IniField:Tinifile;begin
FoldName:=ExtractFilePath(Application.Exename)+'\'+uppercase(ValuesList[0][1]); for i:= VarArrayLowBound(ValuesList,1) to VarArrayHighBound(ValuesList, 1) do
begin
try
IniFile:= Tinifile.Create(FoldName+'_Table.ini');
IniFile.WriteString(ValuesList[i][0],'Caption',ValuesList[i][0]);
finally
inifile.Destroy;
end;
if Flag=1 then //----------Save to Field
begin( 执行这段开始:非常慢;为什么?)
with ADOTemp do
begin
if Active then Active := False;
SQL.Clear;
SQLtemp:='SELECT * FROM ' + Trim(ValuesList[i][0])+' where 1=2';
SQL.Add(SQLtemp);
Prepared;
end;
try
ADOTemp.Open;
ADOTemp.First;
for J := 0 to ADOTemp.Fields.Count -1 do
begin
FldCaption:=ADOTemp.Fields[J].FieldName;
FldSize := IntToStr(ADOTemp.Fields[J].Size);
FldType := FieldTypeString(ADOTemp.Fields[J].DataType);
//------------生成ini文件
try
IniField:= Tinifile.Create(FoldName+'_Field.ini');
s:=Trim(ValuesList[i][0])+'.'+FldCaption;
IniField.WriteString(s,'TableName',Trim(ValuesList[i][0]));
IniField.WriteString(s,'Caption',FldCaption);
IniField.WriteString(s,'DataSize',FldSize);
IniField.WriteString(s,'DataType',FldType);
finally
IniField.Destroy;
end;
//------------生成ini文件
ADOTemp.Next;
end;
ADOTemp.Close;
ADOConn.Close;
except
ADOTemp.close;
ADOConn.Close;
end;
end;
end;end;
var
i,J:integer;
FoldName :string;
FldType, FldSize,FldCaption:string;
SQLtemp,s:string;
IniFile,IniField:Tinifile;begin
FoldName:=ExtractFilePath(Application.Exename)+'\'+uppercase(ValuesList[0][1]); for i:= VarArrayLowBound(ValuesList,1) to VarArrayHighBound(ValuesList, 1) do
begin
try
IniFile:= Tinifile.Create(FoldName+'_Table.ini');
IniFile.WriteString(ValuesList[i][0],'Caption',ValuesList[i][0]);
finally
inifile.Destroy;
end;
if Flag=1 then //----------Save to Field
begin( 执行这段开始:非常慢;为什么?)
with ADOTemp do
begin
if Active then Active := False;
SQL.Clear;
SQLtemp:='SELECT * FROM ' + Trim(ValuesList[i][0])+' where 1=2';
SQL.Add(SQLtemp);
Prepared;
end;
try
ADOTemp.Open;
ADOTemp.First;
for J := 0 to ADOTemp.Fields.Count -1 do
begin
FldCaption:=ADOTemp.Fields[J].FieldName;
FldSize := IntToStr(ADOTemp.Fields[J].Size);
FldType := FieldTypeString(ADOTemp.Fields[J].DataType);
//------------生成ini文件
try
IniField:= Tinifile.Create(FoldName+'_Field.ini');
s:=Trim(ValuesList[i][0])+'.'+FldCaption;
IniField.WriteString(s,'TableName',Trim(ValuesList[i][0]));
IniField.WriteString(s,'Caption',FldCaption);
IniField.WriteString(s,'DataSize',FldSize);
IniField.WriteString(s,'DataType',FldType);
finally
IniField.Destroy;
end;
//------------生成ini文件
ADOTemp.Next;
end;
ADOTemp.Close;
ADOConn.Close;
except
ADOTemp.close;
ADOConn.Close;
end;
end;
end;end;
begin
FldCaption:=ADOTemp.Fields[J].FieldName;
FldSize := IntToStr(ADOTemp.Fields[J].Size);
FldType := FieldTypeString(ADOTemp.Fields[J].DataType);
//------------生成ini文件
try
IniField:= Tinifile.Create(FoldName+'_Field.ini');
// 这里创建了N次。
s:=Trim(ValuesList[i][0])+'.'+FldCaption;
IniField.WriteString(s,'TableName',Trim(ValuesList[i][0]));
IniField.WriteString(s,'Caption',FldCaption);
IniField.WriteString(s,'DataSize',FldSize);
IniField.WriteString(s,'DataType',FldType);
finally
IniField.Destroy;
end;
//------------生成ini文件
ADOTemp.Next;
end;
.....
即就是放到for的外面,也很慢!
代码贴上后就变成这个样^_^,没想到
是不是用adocnn.gettables(记不清了)
是要得到表结构,但我是得到用户选择后的表,然后取选择的表的结构。
但ado对oracle的支持好像有错误!老兄你有什么高见???