Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1097882374
GanibalLector
2004-10-16 03:19
2004.11.07
FTP


14-1098087893
Vlad Oshin
2004-10-18 12:24
2004.11.07
Outlook 2003 and Outlook 2002 do not access to attachmen


1-1098689926
Mishenka
2004-10-25 11:38
2004.11.07
PopupMenu в ComboBox


1-1098788331
dr_
2004-10-26 14:58
2004.11.07
ImageList


1-1098722646
Kniaz
2004-10-25 20:44
2004.11.07
Как программа узнаёт что файл занят другим приложением.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский