Форум: "Базы";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКак создать таблицу ADO+Access... Найти похожие ветки
← →
Галинка © (2004-10-04 09:49) [0]Вот собственно говоря и весь вопрос...
← →
ЮЮ © (2004-10-04 09:50) [1]выполнить запрос CREATE TABLE ...
← →
Галинка © (2004-10-08 15:52) [2]Создание получается, а использование (((...
Вот код создания:ZemlDM.ADOCommand1.CommandText:="Create Table Rez_"
+TableNameStr+"_Epic
(InNNID autoincrement Not Null Primary Key, K_max Single,
H_gip Single)";
ZemlDM.ADOCommand1.Execute;
ZemlDM.ADOCommand1.CommandText:="Create Table Rez_"
+TableNameStr+"_Radiusy
(InIID autoincrement Not Null Primary Key, InNNID
Integer, I_tek Single, BolRad Single, MalRad Single)";
ZemlDM.ADOCommand1.Execute;
Вот код заполнения:ZemlDM.ADOCommand1.CommandText:=Format("Insert Into
Rez_"+TableNameStr+"_Epic (K_max, H_gip) Values (%f, %f)",
[Tek_K, Tek_H]);
ZemlDM.ADOCommand1.Execute;
ZemlDM.ADOCommand1.CommandText:=Format("Insert Into
Rez_"+TableNameStr+"_Radiusy (InNNID, I_Tek, BolRad,
MalRad) Values (%d, %f, %f, %f)", [i, TekIzoParam.I,
TekIzoParam.rad_max, TekIzoParam.rad_min]);
ZemlDM.ADOCommand1.Execute;
Создается все и заполняется прекрасно, а вот использовать не получается...
← →
Галинка © (2004-10-08 15:57) [3]А весь код такой:
procedure TMainForm.CalcNew1Execute(Sender: TObject);
var
Dialog1:TMDBSelectDlg;
Dialog2, Dialog3:TMDBEditDlg;
IntervalDlg:TIntervalsDlg;
i:Integer;
begin
TekActionValue:=0;
Dialog1:=TMDBSelectDlg.Create(Application);
with Dialog1 do
try
ShowModal;
if ModalResult=mrOK then
Dialog2:=TMDBEditDlg.Create(Application);
with Dialog2 do
try
ShowModal;
if ModalResult=mrOK then
begin
Raschet.FullCalculate; {Расчитываем коэффициенты}
IntervalDlg:=TIntervalsDlg.Create(Application);
with IntervalDlg do
try
if IntervalDlg.ShowModal=mrOK then
begin
try
ZemlDM.ADOCommand1.CommandText:="Create Table Rez_"+TableNameStr+"_Epic (InNNID autoincrement Not Null Primary Key, K_max Single, H_gip Single)";
ZemlDM.ADOCommand1.Execute;
ZemlDM.ADOCommand1.CommandText:="Create Table Rez_"+TableNameStr+"_Radiusy (InIID autoincrement Not Null Primary Key, InNNID Integer, I_tek Single, BolRad Single, MalRad Single)";
ZemlDM.ADOCommand1.Execute;
except
on EOleException do
begin
if (MessageDlg("Таблица с общим именем "+ TableNameStr+" уже существует!"+#13+#10+"Записать данные в другую таблицу?",mtWarning,[mbYes, mbNo],0)=mrYes) then
with TTableNameSelectDlg.Create(Application) do
try
if ShowModal=mrOK then
begin
ZemlDM.ADOCommand1.CommandText:="Create Table Rez_"+TableNameStr+"_Epic (InNNID autoincrement Not Null Primary Key, K_max Single, H_gip Single)";
ZemlDM.ADOCommand1.Execute;
ZemlDM.ADOCommand1.CommandText:="Create Table Rez_"+TableNameStr+"_Radiusy (InIID autoincrement Not Null Primary Key, InNNID Integer, I_tek Single, BolRad Single, MalRad Single)";
ZemlDM.ADOCommand1.Execute;
end;
finally
Free;
end
else
begin
ZemlDM.ADOCommand1.CommandText:="Delete from Rez_"+TableNameStr+"_Epic";
ZemlDM.ADOCommand1.Execute;
ZemlDM.ADOCommand1.CommandText:="Delete from Rez_"+TableNameStr+"_Radiusy";
ZemlDM.ADOCommand1.Execute;
end;
end;
end;
{Расчитываем Радиусы}
DecimalSeparator:=".";
Tek_K:=K_min;i:=0;
repeat
Tek_h:=h_min;
repeat
ZemlDM.ADOCommand1.CommandText:=Format("Insert Into Rez_"+TableNameStr+"_Epic (K_max, H_gip) Values (%f, %f)", [Tek_K, Tek_H]);
ZemlDM.ADOCommand1.Execute;
inc(i);
Tek_i:=2;
repeat
TekIzoParam:=Raschet.GetDelta(TekKoefD, TekKoefP, Tek_h, Tek_K, Tek_i);
if TekIzoParam.rad_min>0 then
begin
ZemlDM.ADOCommand1.CommandText:=Format("Insert Into Rez_"+TableNameStr+"_Radiusy (InNNID, I_Tek, BolRad, MalRad) Values (%d, %f, %f, %f)", [i, TekIzoParam.I, TekIzoParam.rad_max, TekIzoParam.rad_min]);
ZemlDM.ADOCommand1.Execute;
end;
Tek_i:=Tek_i+0.5;
until (TekIzoParam.rad_min<0) or (TekIzoParam.rad_max<0);
Tek_h:=Tek_h+h_step;
until Tek_h>h_max;
Tek_K:=Tek_K+K_step;
until Tek_K>K_max;
DecimalSeparator:=",";
SetLength(TablesNames,1);
TablesNames[0]:="Rez_"+TableNameStr+"_Epic";
SetLength(TablesNames,2);
TablesNames[1]:="Rez_"+TableNameStr+"_Radiusy";
SetLength(FieldNames,1);
FieldNames[0]:="K_max";
SetLength(FieldNames,2);
FieldNames[1]:="H_gip";
SetLength(FieldNames,3);
FieldNames[2]:="I_tek";
SetLength(FieldNames,4);
FieldNames[3]:="BolRad";
SetLength(FieldNames,5);
FieldNames[4]:="MalRad";
TekMasterDetailFields:="InNNID;InNNID";
Dialog3:=TMDBEditDlg.Create(Application);
with Dialog3 do
if ShowModal=mrOK then
begin
if (MessageDlg("Хотите построить схему?",mtInformation,[mbYes, mbNo],0)=mrYes) then
CreateMDIChild(TableNameStr);
end;
end;
finally
Free;
end;
end;
finally
Free;
end;
finally
Free;
end;
end;
procedure TMDBEditDlg.OKBtnClick(Sender: TObject);
begin
Visible:=false;
TekArPZ:=ArZemlInit;
ZemlDM.ADOTable1.Active:=false;
ZemlDM.ADOTable2.Active:=false;
ZemlDM.ADOTable2.MasterFields:="";
end;
procedure TMDBEditDlg.FormCreate(Sender: TObject);
var
Ni,Nf,N_Item:integer;
begin
ZemlDM.ADOTable1.TableName:=TablesNames[0];
ZemlDM.ADOTable2.TableName:=TablesNames[1];
ZemlDM.ADOTable1.Active:=true;
ZemlDM.ADOTable2.Active:=true;
DBGrid1.Columns.Clear;
DBGrid2.Columns.Clear;
N_Item:=0;
for Nf:=0 to High(FieldNames) do
begin
for Ni:=0 to ZemlDM.ADOTable1.FieldCount-1 do
if FieldNames[Nf]=ZemlDM.ADOTable1.Fields[Ni].FieldName
then
begin
DBGrid1.Columns.Add;
DBGrid1.Columns.Items[N_Item].Field:=ZemlDM.ADOTable1.FieldByName(FieldNames[Nf]);
inc(N_Item);
end;
end;
N_Item:=0;
for Nf:=0 to High(FieldNames) do
begin
for Ni:=0 to ZemlDM.ADOTable2.FieldCount-1 do
if FieldNames[Nf]=ZemlDM.ADOTable2.Fields[Ni].FieldName
then
begin
DBGrid2.Columns.Add;
DBGrid2.Columns.Items[N_Item].Field:=ZemlDM.ADOTable2.FieldByName(FieldNames[Nf]);
inc(N_Item);
end;
end;
ZemlDM.ADOTable2.MasterFields:=TekMasterDetailFields;
end;
Будут еще вопросы ДОБРО ПОЖАЛОВАТЬ...
Заранее спасибо, если ответы по делу...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.036 c