Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не выполняется SQL - запрос в связной таблице 
V
    Опции темы
kami
Дата 27.8.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Цитата(ivanfr @  27.8.2012,  08:05 Найти цитируемый пост)
Объясните мне не компетентному, что это такое(нижеприведённый код SQL) и как это мне поможет в решении моей проблемы?

Не нужно программе ничего объяснять. Приведенный мной SQL-код создает ограничение - СУБД не сможет добавить запись в таблицу, если в ней уже есть аналогичная. По каким полям производить сравнение - подставляется вместо (Поле1, Поле2). Можете хоть все поля таблицы перечислить через запятую.
Таким образом, после добавления Constraint задача будет сведена к следующему:
Код

try
  попытка_добавить_запись_в_таблицу
except
  показ_пользователю_что_такая_запись_уже_есть
end;

И всё. Не нужно никаких формирований лишних запросов, выборок, сравнений с добавляемым и так далее и тому подобное. Всю эту нагрузку возьмет на себя СУБД.
А вообще, уважаемый, за столько времени можно уже было почитать справку о том, что такое CONSTRAINT и с чем его едят.
Цитата(ivanfr @  27.8.2012,  08:05 Найти цитируемый пост)
Почему, ваше решение  должно работать? 

Потому что прежде чем писать его сюда, я просмотрел справку к Access, увидел нужный синтаксис, создал тестовую таблицу, ввел ограничение и попробовал добавить одинаковые записи. В отличие от вас.
PM MAIL WWW   Вверх
ivanfr
  Дата 28.8.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Буду учиться. 
Так как мне нет необходимости в создании таблицы, то я беру вот эту строку:
Код

ALTER TABLE Таблица1 ADD CONSTRAINT myConstraint UNIQUE(Поле1, Поле2)

в Место:
1)"Таблица1" -" Table_of_key_media"
2)"myConstraint" - не понял что это такое. Смотрел в  примерах стоит всегда другое значение нe связанное с таблицей, например, 
 
Код
ALTER TABLE dbo.Presidents ADD CONSTRAINT President_unique UNIQUE (President) 

Код
 ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

3)"UNIQUE(Поле1, Поле2)" - UNIQUE(Type_Carrier, Serial_Number_Carrier, Issued_Keys, Name_Of_The_Holder_Of_The_Keys,+
                   'Employee_Number_Key_Holder, Position_Or_Location_Key, Workstation_Installation_Inventory_Number,'+
                   'Type_Key, Date_Of_Issue_Of_Key_Media, Date_of_delivery_of_key, Date_Of_Last_Inspection,'+
                   'Integrity_Of_The_Sealing, Order_Of_The_Key_Storage_Medium, Comments )'; 
И должно получиться следующее:
Параметры оставлять и использовать insert нужно? 
Код

try 
TempDataFromMemory[1]:='Отправка данных';
  TempDataFromMemory[2]:='eToken PRO (Java)/72K CERT-1883';
  TempDataFromMemory[3]:='e00858585';
  TempDataFromMemory[4]:='Шифрование, ЭЦП';
  TempDataFromMemory[5]:='Иванов И.И.';
  TempDataFromMemory[6]:='Петров Петр Петрович';
  TempDataFromMemory[7]:='25';
  TempDataFromMemory[8]:='Ленина 1';
  TempDataFromMemory[9]:='ПК 1';
  TempDataFromMemory[10]:='25 64 34 34';
  TempDataFromMemory[11]:='Основной комплект';
  TempDataFromMemory[12]:='';
  TempDataFromMemory[13]:='1 год';
  TempDataFromMemory[14]:='';
  TempDataFromMemory[15]:='Шкаф';
  TempDataFromMemory[16]:='';
  TempDataFromMemory[17]:='01.08.2012';
  TempDataFromMemory[18]:='';
  TempDataFromMemory[19]:='28.10.2011';
  TempDataFromMemory[20]:='28.10.2011';
  TempDataFromMemory[21]:='28.10.2012';
  TempDataFromMemory[22]:='';   
DataModule1.ADOQuery1.SQL.Text:='ALTER TABLE Table_of_key_media ADD CONSTRAINT Id_Tabele_of_Key_Media'+
                   'UNIQUE(Type_Carrier, Serial_Number_Carrier, Issued_Keys, Name_Of_The_Holder_Of_The_Keys,'+
                   'Employee_Number_Key_Holder, Position_Or_Location_Key, Workstation_Installation_Inventory_Number,'+
                   'Type_Key, Date_Of_Issue_Of_Key_Media, Date_of_delivery_of_key, Date_Of_Last_Inspection,'+
                   'Integrity_Of_The_Sealing, Order_Of_The_Key_Storage_Medium, Comments )';   //запись

         DataModule1.ADOTable_of_Key_Media.FieldByName('Type_Carrier').AsString:=TempDataFromMemory[2];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Serial_Number_Carrier').AsString:=TempDataFromMemory[3];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Issued_Keys').AsString:=TempDataFromMemory[5];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Name_Of_The_Holder_Of_The_Keys').AsString:=TempDataFromMemory[6];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Employee_Number_Key_Holder').AsString:=TempDataFromMemory[7];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Position_Or_Location_Key').AsString:=TempDataFromMemory[8];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Workstation_Installation_Inventory_Number').AsString:=TempDataFromMemory[9];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Type_Key').AsString:=TempDataFromMemory[11];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Date_Of_Issue_Of_Key_Media').AsDateTime:=StrToDate(TempDataFromMemory[12]);
         DataModule1.ADOTable_of_Key_Media.FieldByName('Date_of_delivery_of_key').AsDateTime:=StrToDate(TempDataFromMemory[14]);
         DataModule1.ADOTable_of_Key_Media.FieldByName('Date_Of_Last_Inspection').AsDateTime:=StrToDate(TempDataFromMemory[15]);
         DataModule1.ADOTable_of_Key_Media.FieldByName('Integrity_Of_The_Sealing').AsString:=TempDataFromMemory[16];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Order_Of_The_Key_Storage_Medium').AsString:=TempDataFromMemory[17];
         DataModule1.ADOTable_of_Key_Media.FieldByName('Comments').AsString:=TempDataFromMemory[18];
         //DataModule1.ADOTable_Key_User.FieldByName('Order').AsString:=TempDataFromMemory[21];
        DataModule1.ADOTable_of_Key_Media.post;
      
      except
          ShowMessage('Такая запсь существует')//Ошибка записи
      end;

user posted image

Не совсем понятно, как добавить в связную таблицу оставшиеся данные.
По логике  
Код
ALTER TABLE Таблица1 ADD CONSTRAINT myConstraint UNIQUE(Поле1, Поле2)
 код тот же, только необходимо получить индекс строки ключевого носителя из схемы данных видно, в который будет добавлен ключ?

Прошу Вас объяснить моменты, которые я не понимаю. 


Это сообщение отредактировал(а) ivanfr - 28.8.2012, 11:05
PM MAIL   Вверх
kami
Дата 28.8.2012, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Цитата(ivanfr @  28.8.2012,  09:53 Найти цитируемый пост)
Так как мне нет необходимости в создании таблицы, то я беру вот эту строку:

да.
Цитата(ivanfr @  28.8.2012,  09:53 Найти цитируемый пост)
"myConstraint" - не понял что это такое. 

А нужно смотреть не в примерах, а в описании самого оператора и особенно - в ремарках. Хелп пересказывать не буду. 
Цитата(ivanfr @  28.8.2012,  09:53 Найти цитируемый пост)
И должно получиться следующее:

нет.
Цитата(kami @  27.8.2012,  11:59 Найти цитируемый пост)
 после добавления Constraint задача будет сведена к следующему:

Читаем. Смотрим еще раз на синтаксис ALTER TABLE. Думаем. Смотрим на выделенное жирным шрифтом. Опять думаем
И понимаем, что этот SQL оператор нужно/можно выполнить непосредственно в Access ОДИН раз при создании БД. А потом пользоваться обычным INSERT INTO с его параметрами.
Кстати, по поводу исключения могу ошибаться - возможно, ADOQuery.ExecSQL при добавлении записи в таблицу просто вернет 0 вместо 1. Но сути дела это не меняет.

Цитата(ivanfr @  28.8.2012,  09:53 Найти цитируемый пост)
Не совсем понятно, как добавить в связную таблицу оставшиеся данные.

Если добавление было успешно, то следующий запрос "SELECT @@IDENTITY" вернет ID добавленной записи в том случае, если ID поле - автоинкрементное.
PM MAIL WWW   Вверх
ivanfr
Дата 24.9.2012, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Ура!!! наконце получилось!
Как делал: 
1)нашёл эту статью где все понятно написано ссылка:http://office.microsoft.com/ru-ru/access-h...A010341600.aspx
Выполнил по пунктно
Цитата

Ограничения на несколько полей
Предложение CONSTRAINT для нескольких полей можно использовать только вне предложения определения полей. Оно имеет следующий синтаксис:
CONSTRAINT имя_ограничения 
{PRIMARY KEY (поле_пк1[, поле_пк2[, ...]]) |
 UNIQUE (уник1[, уник2[, ...]]) |
 NOT NULL (не_нулев1[, не_нулев2[, ...]]) |
 FOREIGN KEY [NO INDEX] (ссыл_поле1[, ссыл_поле2[, ...]]) 
  REFERENCES внешняя_таблица 
  [(поле_внешнего_ключа1[, поле_внешнего_ключа2[, ...]])] |
 [ON UPDATE {CASCADE | SET NULL}]
 [ON DELETE {CASCADE | SET NULL}]}
Рассмотрим еще один пример с таблицей Cars. Предположим, что необходимо обеспечить, чтобы в двух различных записях в таблице Cars не совпадали сочетания значений марки, года, состояния и цены. С этой целью можно создать для этих полей ограничение UNIQUE, выполнив указанные ниже действия.
1) На вкладке Создание нажмите в группе Макросы и код кнопку Конструктор запросов.
2) Закройте диалоговое окно Добавление таблицы.
3) На вкладке Конструктор в группе Тип запроса щелкните элемент Определение данных.
4) Сетка конструктора пропадет, появится вкладка объекта режима SQL.
5) Введите следующую инструкцию SQL:
ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (name, year, condition, price)
в моем в моем случае я ввел: 
ALTER TABLE Table_of_key_media ADD CONSTRAINT NoDupesKey UNIQUE (Type_Carrier,Serial_Number_Carrier,Issued_Keys,Name_Of_The_Holder_Of_The_Keys,Employee_Number_Key_Holder,Position_Or_Location_Key,Workstation_Installation_Inventory_Number,Type_Key,Date_Of_Issue_Of_Key_Media,Order_Of_The_Key_Storage_Medium)
6) На вкладке Конструктор в группе Результаты выберите команду Запуск.
Затем 

Запускаю в Delphi следующий код:
Код

TempDataFromMemory[0]:='';
  TempDataFromMemory[1]:='Данные';
  TempDataFromMemory[2]:='RuToken';
  TempDataFromMemory[3]:='765095619035029';
  TempDataFromMemory[4]:='Шифрование, ЭЦП1';
  TempDataFromMemory[5]:='Сидоров Петр Иванович';
  TempDataFromMemory[6]:='Иванов Иван Ивановича.';
  TempDataFromMemory[7]:='7654';
  TempDataFromMemory[8]:='Ленина 1, дом 1';
  TempDataFromMemory[9]:='ПК01';
  TempDataFromMemory[10]:='87838ПРУ381';
  TempDataFromMemory[11]:='Сертификат1';
  TempDataFromMemory[12]:='09.11.2012';
  TempDataFromMemory[13]:='1 год1';
  TempDataFromMemory[14]:='';
  TempDataFromMemory[15]:='';
  TempDataFromMemory[16]:='';
  TempDataFromMemory[17]:='';
  TempDataFromMemory[18]:='';
  TempDataFromMemory[19]:='09.11.2013';
  TempDataFromMemory[20]:='28.10.2012';
  TempDataFromMemory[21]:='28.10.2013';
  TempDataFromMemory[22]:='';

 DataModule1.ADOTable_of_Key_Media.Insert;
            if TempDataFromMemory[2]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Type_Carrier').AsString:=TempDataFromMemory[2];
            if TempDataFromMemory[3]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Serial_Number_Carrier').AsString:=TempDataFromMemory[3];
            if TempDataFromMemory[5]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Issued_Keys').AsString:=TempDataFromMemory[5];
            if TempDataFromMemory[6]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Name_Of_The_Holder_Of_The_Keys').AsString:=TempDataFromMemory[6];
            if TempDataFromMemory[7]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Employee_Number_Key_Holder').AsString:=TempDataFromMemory[7];
            if TempDataFromMemory[8]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Position_Or_Location_Key').AsString:=TempDataFromMemory[8];
            if TempDataFromMemory[9]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Workstation_Installation_Inventory_Number').AsString:=TempDataFromMemory[9];
            if TempDataFromMemory[11]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Type_Key').AsString:=TempDataFromMemory[11];
            if (TempDataFromMemory[12]<>'') and (TempDataFromMemory[12]<>'0')
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Date_Of_Issue_Of_Key_Media').AsDateTime:=StrToDate(TempDataFromMemory[12]);
            if (TempDataFromMemory[15]<>'') and (TempDataFromMemory[15]<>'0')
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Date_Of_Last_Inspection').AsDateTime:=StrToDate(TempDataFromMemory[15]);
            if TempDataFromMemory[16]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Integrity_Of_The_Sealing').AsString:=TempDataFromMemory[16];
            if TempDataFromMemory[17]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Order_Of_The_Key_Storage_Medium').AsString:=TempDataFromMemory[17];
            if TempDataFromMemory[18]<>''
              then DataModule1.ADOTable_of_Key_Media.FieldByName('Comments').AsString:=TempDataFromMemory[18];
            //DataModule1.ADOTable_Key_User.FieldByName('Order').AsString:=TempDataFromMemory[21];
           try
            DataModule1.ADOTable_of_Key_Media.post;
           except
             ShowMessage('Ошибка добавления данных: одинаковые поля');
             DataModule1.ADOTable_of_Key_Media.CancelUpdates
           end;

БД не дает ввносить изменение если идентичная строка в базе сущестует, если изменить 1 или два поля то данные добавить можно.
Благодарю всех кто помогал, отдельное спасибо kami

kami
Если б сразу сказал, что нужно выполнить SQL запрос в самом Access,  что в итоге позволит создать ограничение на несколько полей уже бы сделал давно. 



Это сообщение отредактировал(а) ivanfr - 24.9.2012, 08:12
PM MAIL   Вверх
kami
Дата 24.9.2012, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Цитата(ivanfr @  24.9.2012,  07:58 Найти цитируемый пост)
Если б сразу сказал, что нужно выполнить SQL запрос в самом Access,  что в итоге позволит создать ограничение на несколько полей уже бы сделал давно. 

то ли лыжи не едут,...
но:
Цитата(kami @  28.8.2012,  11:37 Найти цитируемый пост)
этот SQL оператор нужно/можно выполнить непосредственно в Access ОДИН раз при создании БД.

 smile 
PM MAIL WWW   Вверх
ivanfr
Дата 25.9.2012, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



На всякий случай добавляю вариант с INSERT INTO 
Код

Procedure WriteBD1();
 var LastRecordingSession:Integer;
 begin {Самое начало}
  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Text:='INSERT INTO Table_of_key_media '
             +'([Type_Carrier],[Serial_Number_Carrier],[Issued_Keys],[Name_Of_The_Holder_Of_The_Keys],'
             +'[Employee_Number_Key_Holder],[Position_Or_Location_Key],[Workstation_Installation_Inventory_Number],'
             +'[Type_Key],[Date_Of_Issue_Of_Key_Media],[Date_of_delivery_of_key],[Date_Of_Last_Inspection],'
             +'[Integrity_Of_The_Sealing],[Order_Of_The_Key_Storage_Medium],[Comments])'
             +'VALUES (:Type_Carrier_Parameters,:Serial_Number_Carrier_Parameters,:Issued_Keys_Parameters,'
             +':Name_Of_The_Holder_Of_The_Keys_Parameters,:Employee_Number_Key_Holder_Parameters,'
             +':Position_Or_Location_Key_Parameters,:Workstation_Installation_Inventory_Number_Parameters,'
             +':Type_Key_Parameters,:Date_Of_Issue_Of_Key_Media_Parameters,:Date_of_delivery_of_key_Parameters,'
             +':Date_Of_Last_Inspection_Parameters,:Integrity_Of_The_Sealing_Parameters,:Order_Of_The_Key_Storage_Medium_Parameters,'
             +':Comments_Parameters)';
     //Параметры запроса
  DataModule1.ADOQuery1.Parameters.ParamByName('Type_Carrier_Parameters').Value:=TempDataFromMemory[2];
  DataModule1.ADOQuery1.Parameters.ParamByName('Serial_Number_Carrier_Parameters').Value:=TempDataFromMemory[3];
  DataModule1.ADOQuery1.Parameters.ParamByName('Issued_Keys_Parameters').Value:=TempDataFromMemory[5];
  DataModule1.ADOQuery1.Parameters.ParamByName('Name_Of_The_Holder_Of_The_Keys_Parameters').Value:=TempDataFromMemory[6];
  DataModule1.ADOQuery1.Parameters.ParamByName('Employee_Number_Key_Holder_Parameters').Value:=TempDataFromMemory[7];
  DataModule1.ADOQuery1.Parameters.ParamByName('Position_Or_Location_Key_Parameters').Value:=TempDataFromMemory[8];
  DataModule1.ADOQuery1.Parameters.ParamByName('Workstation_Installation_Inventory_Number_Parameters').Value:=TempDataFromMemory[9];
  DataModule1.ADOQuery1.Parameters.ParamByName('Type_Key_Parameters').Value:=TempDataFromMemory[11];
  DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Of_Key_Media_Parameters').Value:= StrToDate(TempDataFromMemory[12]);
  DataModule1.ADOQuery1.Parameters.ParamByName('Date_of_delivery_of_key_Parameters').Value:= StrToDate(TempDataFromMemory[14]);
  DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Last_Inspection_Parameters').Value:= StrToDate(TempDataFromMemory[15]);
  DataModule1.ADOQuery1.Parameters.ParamByName('Integrity_Of_The_Sealing_Parameters').Value:=TempDataFromMemory[16];
  DataModule1.ADOQuery1.Parameters.ParamByName('Order_Of_The_Key_Storage_Medium_Parameters').Value:=TempDataFromMemory[17];
  DataModule1.ADOQuery1.Parameters.ParamByName('Comments_Parameters').Value:=TempDataFromMemory[18];
  //Выполнение зароса
  DataModule1.ADOQuery1.ExecSQL;
  DataModule1.ADOQuery1.SQL.Text:='SELECT @@IDENTITY';
  DataModule1.ADOQuery1.Open;
  LastRecordingSession:=DataModule1.ADOQuery1.fields[0].value;

  ShowMessage(inttostr(LastRecordingSession));
  //DataModule1.ADOQuery1.Locate('Id_Tabele_of_Key_Media',LastRecordingSession,[])

  end;{Самый конец}

PM MAIL   Вверх
ivanfr
Дата 26.9.2012, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Помогите довести данный вопрос до логического конца. 
Код

Procedure WriteBD1();
 var LastRecordingSession:Integer;
 begin {Самое начало}
  //ЗАпись информации о КНИ
  LastRecordingSession:=0;
  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Text:='INSERT INTO Table_of_key_media '
    +'([Type_Carrier],[Serial_Number_Carrier],[Issued_Keys],[Name_Of_The_Holder_Of_The_Keys],'
    +'[Employee_Number_Key_Holder],[Position_Or_Location_Key],[Workstation_Installation_Inventory_Number],'
    +'[Type_Key],[Date_Of_Issue_Of_Key_Media],[Date_of_delivery_of_key],[Date_Of_Last_Inspection],'
    +'[Integrity_Of_The_Sealing],[Order_Of_The_Key_Storage_Medium],[Comments])'
    +'VALUES (:Type_Carrier_Parameters,:Serial_Number_Carrier_Parameters,:Issued_Keys_Parameters,'
    +':Name_Of_The_Holder_Of_The_Keys_Parameters,:Employee_Number_Key_Holder_Parameters,'
    +':Position_Or_Location_Key_Parameters,:Workstation_Installation_Inventory_Number_Parameters,'
    +':Type_Key_Parameters,:Date_Of_Issue_Of_Key_Media_Parameters,:Date_of_delivery_of_key_Parameters,'
    +':Date_Of_Last_Inspection_Parameters,:Integrity_Of_The_Sealing_Parameters,:Order_Of_The_Key_Storage_Medium_Parameters,'
    +':Comments_Parameters)';
     //Параметры запроса
  DataModule1.ADOQuery1.Parameters.ParamByName('Type_Carrier_Parameters').Value:=TempDataFromMemory[2];
  DataModule1.ADOQuery1.Parameters.ParamByName('Serial_Number_Carrier_Parameters').Value:=TempDataFromMemory[3];
  DataModule1.ADOQuery1.Parameters.ParamByName('Issued_Keys_Parameters').Value:=TempDataFromMemory[5];
  DataModule1.ADOQuery1.Parameters.ParamByName('Name_Of_The_Holder_Of_The_Keys_Parameters').Value:=TempDataFromMemory[6];
  DataModule1.ADOQuery1.Parameters.ParamByName('Employee_Number_Key_Holder_Parameters').Value:=TempDataFromMemory[7];
  DataModule1.ADOQuery1.Parameters.ParamByName('Position_Or_Location_Key_Parameters').Value:=TempDataFromMemory[8];
  DataModule1.ADOQuery1.Parameters.ParamByName('Workstation_Installation_Inventory_Number_Parameters').Value:=TempDataFromMemory[9];
  DataModule1.ADOQuery1.Parameters.ParamByName('Type_Key_Parameters').Value:=TempDataFromMemory[11];
  DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Of_Key_Media_Parameters').Value:= StrToDate(TempDataFromMemory[12]);
  DataModule1.ADOQuery1.Parameters.ParamByName('Date_of_delivery_of_key_Parameters').Value:= StrToDate(TempDataFromMemory[14]);
  DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Last_Inspection_Parameters').Value:= StrToDate(TempDataFromMemory[15]);
  DataModule1.ADOQuery1.Parameters.ParamByName('Integrity_Of_The_Sealing_Parameters').Value:=TempDataFromMemory[16];
  DataModule1.ADOQuery1.Parameters.ParamByName('Order_Of_The_Key_Storage_Medium_Parameters').Value:=TempDataFromMemory[17];
  DataModule1.ADOQuery1.Parameters.ParamByName('Comments_Parameters').Value:=TempDataFromMemory[18];
  //Выполнение зароса
  try
    DataModule1.ADOQuery1.ExecSQL;
  except
    // LastRecordingSession:=DataModule1.ADOQuery1.Fields.Fields[0].AsInteger;
    DataModule1.ADOQuery1.SQL.Clear;
    DataModule1.ADOQuery1.SQL.Text:='INSERT INTO Key_User '
      +'([Id_Table_Of_Key_Media],[Name_System],[Appointment_Of_Key_In_The_System],[Issued_Keys],[Name_Of_The_Holder_Of_The_Keys],'
      +'[Number_Of_Key],[Type_Key],[Term_Deysviya_Key_Or_Key_Carrier],[Date_Of_Issue_Identifier],'
      +'[Valid_From],[Valid_To])'
      +'VALUES(:Id_Table_Of_Key_Media_Parameters,:Name_System_Parameters,:Appointment_Of_Key_In_The_System_Parameters,:Issued_Keys_Parameters,'
      +':Name_Of_The_Holder_Of_The_Keys_Parameters,:Number_Of_Key_Parameters,:Type_Key_Parameters,'
      +':Term_Deysviya_Key_Or_Key_Carrier_Parameters,:Date_Of_Issue_Identifier_Parameters,:Valid_From_Parameters,:Valid_To_Parameters)';

    DataModule1.ADOQuery1.Parameters.ParamByName('Id_Table_Of_Key_Media_Parameters').Value:=LastRecordingSession; //ID Записи
    DataModule1.ADOQuery1.Parameters.ParamByName('Name_System_Parameters').Value:=TempDataFromMemory[1];
    DataModule1.ADOQuery1.Parameters.ParamByName('Appointment_Of_Key_In_The_System_Parameters').Value:=TempDataFromMemory[4];
    DataModule1.ADOQuery1.Parameters.ParamByName('Issued_Keys_Parameters').Value:=TempDataFromMemory[5];
    DataModule1.ADOQuery1.Parameters.ParamByName('Name_Of_The_Holder_Of_The_Keys_Parameters').Value:=TempDataFromMemory[6];
    DataModule1.ADOQuery1.Parameters.ParamByName('Number_Of_Key_Parameters').Value:=TempDataFromMemory[10];
    DataModule1.ADOQuery1.Parameters.ParamByName('Type_Key_Parameters').Value:=TempDataFromMemory[11];
    DataModule1.ADOQuery1.Parameters.ParamByName('Term_Deysviya_Key_Or_Key_Carrier_Parameters').Value:=TempDataFromMemory[13];
    DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Identifier_Parameters').Value:=StrToDate(TempDataFromMemory[19]);
    DataModule1.ADOQuery1.Parameters.ParamByName('Valid_From_Parameters').Value:=StrToDate(TempDataFromMemory[20]);
    DataModule1.ADOQuery1.Parameters.ParamByName('Valid_To_Parameters').Value:=StrToDate(TempDataFromMemory[21]);
    DataModule1.ADOQuery1.ExecSQL;
  end;//Конеце EXCEPT
  //------------------------Получение ID последней записи-----------------------
  DataModule1.ADOQuery1.SQL.Text:='SELECT @@IDENTITY';//Получаю ID Последней записи
  DataModule1.ADOQuery1.Open;
  LastRecordingSession:=DataModule1.ADOQuery1.Fields[0].Value;
  //------------------------Получение ID последней записи-----------------------
  if LastRecordingSession=0 then
    begin
      ShowMessage('Не удалось получить значение счетчика LastRecordingSession, которое равно'+ inttostr(LastRecordingSession));
      exit;
    end;
  //Запись информации о КИ
  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Text:='INSERT INTO Key_User '
    +'([Id_Table_Of_Key_Media],[Name_System],[Appointment_Of_Key_In_The_System],[Issued_Keys],[Name_Of_The_Holder_Of_The_Keys],'
    +'[Number_Of_Key],[Type_Key],[Term_Deysviya_Key_Or_Key_Carrier],[Date_Of_Issue_Identifier],'
    +'[Valid_From],[Valid_To])'
    +'VALUES(:Id_Table_Of_Key_Media_Parameters,:Name_System_Parameters,:Appointment_Of_Key_In_The_System_Parameters,:Issued_Keys_Parameters,'
    +':Name_Of_The_Holder_Of_The_Keys_Parameters,:Number_Of_Key_Parameters,:Type_Key_Parameters,'
    +':Term_Deysviya_Key_Or_Key_Carrier_Parameters,:Date_Of_Issue_Identifier_Parameters,:Valid_From_Parameters,:Valid_To_Parameters)';
  //DataModule1.ADOQuery1.Parameters.ParamByName('Id_Table_Of_Key_Media_Parameters').Value:=LastRecordingSession; //ID Записи
  DataModule1.ADOQuery1.Parameters.ParamByName('Name_System_Parameters').Value:=TempDataFromMemory[1];
  DataModule1.ADOQuery1.Parameters.ParamByName('Appointment_Of_Key_In_The_System_Parameters').Value:=TempDataFromMemory[4];
  DataModule1.ADOQuery1.Parameters.ParamByName('Issued_Keys_Parameters').Value:=TempDataFromMemory[5];
  DataModule1.ADOQuery1.Parameters.ParamByName('Name_Of_The_Holder_Of_The_Keys_Parameters').Value:=TempDataFromMemory[6];
  DataModule1.ADOQuery1.Parameters.ParamByName('Number_Of_Key_Parameters').Value:=TempDataFromMemory[10];
  DataModule1.ADOQuery1.Parameters.ParamByName('Type_Key_Parameters').Value:=TempDataFromMemory[11];
  DataModule1.ADOQuery1.Parameters.ParamByName('Term_Deysviya_Key_Or_Key_Carrier_Parameters').Value:=TempDataFromMemory[13];
  DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Identifier_Parameters').Value:=StrToDate(TempDataFromMemory[19]);
  DataModule1.ADOQuery1.Parameters.ParamByName('Valid_From_Parameters').Value:=StrToDate(TempDataFromMemory[20]);
  DataModule1.ADOQuery1.Parameters.ParamByName('Valid_To_Parameters').Value:=StrToDate(TempDataFromMemory[21]);
  DataModule1.ADOQuery1.ExecSQL;
{
  DataModule1.ADOQuery1.SQL.Text:='SELECT @@IDENTITY';
  DataModule1.ADOQuery1.Open;
  LastRecordingSession:=DataModule1.ADOQuery1.Fields[0].Value; //Получаю ID ТАБЛИЦЫ
  ShowMessage(inttostr(LastRecordingSession));
  DataModule1.ADOQuery1.Locate('Id_Tabele_of_Key_Media',LastRecordingSession,[])
  }
  end;{Самый конец}


user posted image
Рисунок - Схема данных

Сейчас данные добавляются, но не связываются, так как отсутсвуют индексы записи.
Ранее я устанавливал в ДБ Гриде на запись с  locate таблице persona_stor на нужную запись, а затем записывал данные.  Сейчас же запись осуществляется с помощью INSERT INTO и ему нужно предоставить индекс для связи таблиц.
Делаю следующим образом, передаю, пытаюсь записать данные о ключевом носителе информации.
В БД сделал ограничение по 10 столбцам, если совпадают, то запись сделать не возможно.
И далее обрабатывается исключительная ситуация, а именно except, - где я пытаюсь дописать информацию о ключе, если запись не совпадает - то записывается в БД. 
Тут возникает проблема, как узнать все ID нужных мне записей, по которым таблицы связываются друг с другом.
Допустим, после записи я могу сразу получить ID текущей записи, следующим образом: 
Код

//------------------------Получение ID последней записи-----------------------
  DataModule1.ADOQuery1.SQL.Text:='SELECT @@IDENTITY';//Получаю ID Последней записи
  DataModule1.ADOQuery1.Open;
  LastRecordingSession:=DataModule1.ADOQuery1.Fields[0].Value;

Запишу значение  в следующую таблицу (в моём случае Таблица Key_User записи Id_Table_of_Key_Media),  но как узнать ID записи вышестоящей таблицы, а именно  таблицы persona_stor записи Id_persona_stor записав это значение в таблицу Table_of_key_media столбца Id_table_persona_stor?
Есть предположение как это сделать, сформировать sql-запрос на поиск данных из него выбрать id. 
Есть еще вариант с помощью LOCETE установить на запись а затем извлеч ID только не пойму как.
на запись перехожу так:
Код

if DataModule1.ADOTable_persona_stor.Locate('tabel_nomer', Trim(TempDataFromMemory[7]),[loCaseInsensitive,loPartialKey]) then
  begin
    Form2.DBGrid2.SetFocus;
end;

Помогите решить задачу.

Это сообщение отредактировал(а) ivanfr - 26.9.2012, 09:29
PM MAIL   Вверх
kami
Дата 27.9.2012, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



После Locate:
Код

id_persona_stor:=DataModule1.ADOTable_persona_stor.FieldByName('id_persona_stor').AsInteger;


Добавлено через 2 минуты и 56 секунд
Ну и соответственно в этот гигантский Insert Into добавляем поле 'id_persona_stor' и значение id_persona_stor
PM MAIL WWW   Вверх
ivanfr
Дата 27.9.2012, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Сам разобрался вчера, долго парился..
но все равно спасибо за ответ.

Цитата

kami
После Locate:код Pascal/Delphi
1:
  id_persona_stor:=DataModule1.ADOTable_persona_stor.FieldByName('id_persona_stor').AsInteger;

если так сделать, то он должен добавить индекс только в таблицу КНИ, а в таблицу КИ ничего не добавит и ключ не свяжется.

я сделал так для таблицы КНИ 
Код

  if DataModule1.ADOTable_persona_stor.Locate('tabel_nomer', Trim(TempDataFromMemory[7]),[loCaseInsensitive,loPartialKey]) then
      begin
        Form2.DBGrid2.SetFocus;
        LastRecordingSession:=DataModule1.ADOTable_persona_stor.Fields.Fields[0].AsInteger;// получаю индекс потом, добавляю в insert int
      end
 

а для таблцы КИ  след. образом
Код

if DataModule1.ADOTable_persona_stor.Locate('tabel_nomer', Trim(TempDataFromMemory[7]),[loCaseInsensitive,loPartialKey]) then
      begin
       LastRecordingSession:=DataModule1.ADOTable_Key_User.Fields.Fields[0].AsInteger;


Привожу итоговый код:
Код

Procedure WriteBD1();
 var LastRecordingSession:Integer;
 s:string;
 begin {Самое начало}
  //ЗАпись информации о КНИ
  LastRecordingSession:=0;
  if DataModule1.ADOTable_persona_stor.Locate('tabel_nomer', Trim(TempDataFromMemory[7]),[loCaseInsensitive,loPartialKey]) then
      begin
        Form2.DBGrid2.SetFocus;
        LastRecordingSession:=DataModule1.ADOTable_persona_stor.Fields.Fields[0].AsInteger;
      end;

  //if ((TempDataFromMemory[12]='0')or(TempDataFromMemory[12]='')) then  TempDataFromMemory[12]:='NULL';
  //if (TempDataFromMemory[14]='0')or(TempDataFromMemory[14]='') then  TempDataFromMemory[14]:='NULL';
  //if (TempDataFromMemory[15]='0')or(TempDataFromMemory[15]='') then  TempDataFromMemory[15]:='NULL';

  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Text:='INSERT INTO Table_of_key_media '
    +'([Id_Table_Persona_Stor],[Type_Carrier],[Serial_Number_Carrier],[Issued_Keys],[Name_Of_The_Holder_Of_The_Keys],'
    +'[Employee_Number_Key_Holder],[Position_Or_Location_Key],[Workstation_Installation_Inventory_Number],'
    +'[Type_Key],[Date_Of_Issue_Of_Key_Media],[Date_of_delivery_of_key],[Date_Of_Last_Inspection],'
    +'[Integrity_Of_The_Sealing],[Order_Of_The_Key_Storage_Medium],[Comments])'
    +'VALUES (:Id_Table_Persona_Stor_Parameters,:Type_Carrier_Parameters,:Serial_Number_Carrier_Parameters,:Issued_Keys_Parameters,'
    +':Name_Of_The_Holder_Of_The_Keys_Parameters,:Employee_Number_Key_Holder_Parameters,'
    +':Position_Or_Location_Key_Parameters,:Workstation_Installation_Inventory_Number_Parameters,'
    +':Type_Key_Parameters,:Date_Of_Issue_Of_Key_Media_Parameters,:Date_of_delivery_of_key_Parameters,'
    +':Date_Of_Last_Inspection_Parameters,:Integrity_Of_The_Sealing_Parameters,:Order_Of_The_Key_Storage_Medium_Parameters,'
    +':Comments_Parameters)';
     //Параметры запроса
  DataModule1.ADOQuery1.Parameters.ParamByName('Id_Table_Persona_Stor_Parameters').Value:=LastRecordingSession;
  DataModule1.ADOQuery1.Parameters.ParamByName('Type_Carrier_Parameters').Value:=TempDataFromMemory[2];
  DataModule1.ADOQuery1.Parameters.ParamByName('Serial_Number_Carrier_Parameters').Value:=TempDataFromMemory[3];
  DataModule1.ADOQuery1.Parameters.ParamByName('Issued_Keys_Parameters').Value:=TempDataFromMemory[5];
  DataModule1.ADOQuery1.Parameters.ParamByName('Name_Of_The_Holder_Of_The_Keys_Parameters').Value:=TempDataFromMemory[6];
  DataModule1.ADOQuery1.Parameters.ParamByName('Employee_Number_Key_Holder_Parameters').Value:=TempDataFromMemory[7];
  DataModule1.ADOQuery1.Parameters.ParamByName('Position_Or_Location_Key_Parameters').Value:=TempDataFromMemory[8];
  DataModule1.ADOQuery1.Parameters.ParamByName('Workstation_Installation_Inventory_Number_Parameters').Value:=TempDataFromMemory[9];
  DataModule1.ADOQuery1.Parameters.ParamByName('Type_Key_Parameters').Value:=TempDataFromMemory[11];
  if ((TempDataFromMemory[12]='0')or(TempDataFromMemory[12]=''))
    then
      DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Of_Key_Media_Parameters').Value:=null
      else
        DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Of_Key_Media_Parameters').Value:=StrToDate(TempDataFromMemory[12]);

  if ((TempDataFromMemory[14]='0')or(TempDataFromMemory[14]=''))
    then
      DataModule1.ADOQuery1.Parameters.ParamByName('Date_of_delivery_of_key_Parameters').Value:=null
      else
        DataModule1.ADOQuery1.Parameters.ParamByName('Date_of_delivery_of_key_Parameters').Value:=StrToDate(TempDataFromMemory[14]);

  if ((TempDataFromMemory[15]='0')or(TempDataFromMemory[15]=''))
    then
      DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Last_Inspection_Parameters').Value:=null
      else
        DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Last_Inspection_Parameters').Value:=StrToDate(TempDataFromMemory[15]);

  DataModule1.ADOQuery1.Parameters.ParamByName('Integrity_Of_The_Sealing_Parameters').Value:=TempDataFromMemory[16];
  DataModule1.ADOQuery1.Parameters.ParamByName('Order_Of_The_Key_Storage_Medium_Parameters').Value:=TempDataFromMemory[17];
  DataModule1.ADOQuery1.Parameters.ParamByName('Comments_Parameters').Value:=TempDataFromMemory[18];
  //Выполнение зароса
  try
    DataModule1.ADOQuery1.ExecSQL;
  except
    // LastRecordingSession:=DataModule1.ADOQuery1.Fields.Fields[0].AsInteger;
    if DataModule1.ADOTable_persona_stor.Locate('tabel_nomer', Trim(TempDataFromMemory[7]),[loCaseInsensitive,loPartialKey]) then
      begin
        //Form2.DBGrid2.SetFocus;
        //LastRecordingSession:=DataModule1.ADOTable_persona_stor.Fields.Fields[0].AsInteger;
        LastRecordingSession:=DataModule1.ADOTable_Key_User.Fields.Fields[0].AsInteger;
        DataModule1.ADOQuery1.SQL.Clear;
        DataModule1.ADOQuery1.SQL.Text:='INSERT INTO Key_User '
              +'([Id_Table_Of_Key_Media],[Name_System],[Appointment_Of_Key_In_The_System],[Issued_Keys],[Name_Of_The_Holder_Of_The_Keys],'
              +'[Number_Of_Key],[Type_Key],[Term_Deysviya_Key_Or_Key_Carrier],[Date_Of_Issue_Identifier],'
              +'[Valid_From],[Valid_To])'
              +'VALUES(:Id_Table_Of_Key_Media_Parameters,:Name_System_Parameters,:Appointment_Of_Key_In_The_System_Parameters,:Issued_Keys_Parameters,'
              +':Name_Of_The_Holder_Of_The_Keys_Parameters,:Number_Of_Key_Parameters,:Type_Key_Parameters,'
              +':Term_Deysviya_Key_Or_Key_Carrier_Parameters,:Date_Of_Issue_Identifier_Parameters,:Valid_From_Parameters,:Valid_To_Parameters)';
        DataModule1.ADOQuery1.Parameters.ParamByName('Id_Table_Of_Key_Media_Parameters').Value:=LastRecordingSession; //ID Записи
        DataModule1.ADOQuery1.Parameters.ParamByName('Name_System_Parameters').Value:=TempDataFromMemory[1];
        DataModule1.ADOQuery1.Parameters.ParamByName('Appointment_Of_Key_In_The_System_Parameters').Value:=TempDataFromMemory[4];
        DataModule1.ADOQuery1.Parameters.ParamByName('Issued_Keys_Parameters').Value:=TempDataFromMemory[5];
        DataModule1.ADOQuery1.Parameters.ParamByName('Name_Of_The_Holder_Of_The_Keys_Parameters').Value:=TempDataFromMemory[6];
        DataModule1.ADOQuery1.Parameters.ParamByName('Number_Of_Key_Parameters').Value:=TempDataFromMemory[10];
        DataModule1.ADOQuery1.Parameters.ParamByName('Type_Key_Parameters').Value:=TempDataFromMemory[11];
        DataModule1.ADOQuery1.Parameters.ParamByName('Term_Deysviya_Key_Or_Key_Carrier_Parameters').Value:=TempDataFromMemory[13];
        if ((TempDataFromMemory[19]='0')or(TempDataFromMemory[19]=''))
          then
            DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Identifier_Parameters').Value:=null
            else
              DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Identifier_Parameters').Value:=StrToDate(TempDataFromMemory[19]);
        if ((TempDataFromMemory[20]='0')or(TempDataFromMemory[20]=''))
          then
            DataModule1.ADOQuery1.Parameters.ParamByName('Valid_From_Parameters').Value:=null
            else
              DataModule1.ADOQuery1.Parameters.ParamByName('Valid_From_Parameters').Value:=StrToDate(TempDataFromMemory[20]);
        if ((TempDataFromMemory[21]='0')or(TempDataFromMemory[21]=''))
          then
            DataModule1.ADOQuery1.Parameters.ParamByName('Valid_To_Parameters').Value:=null
            else
              DataModule1.ADOQuery1.Parameters.ParamByName('Valid_To_Parameters').Value:=StrToDate(TempDataFromMemory[21]);
        try
          DataModule1.ADOQuery1.ExecSQL;
        except
          ShowMessage('Произошла ошибка при добавлении данных в Кey_User на'
          +' данном этапе ключевой носитель с такими параметрами существует'
          +' не получилось добавить КИ. Возможная причина данные с таким КИ'
          +' уже внесены');
          exit
        end;
      end;
  end;//Конеце EXCEPT
  //------------------------Получение ID последней записи-----------------------
  LastRecordingSession:=0;
  DataModule1.ADOQuery1.SQL.Text:='SELECT @@IDENTITY';//Получаю ID Последней записи
  DataModule1.ADOQuery1.Open;
  LastRecordingSession:=DataModule1.ADOQuery1.Fields[0].Value;
  //------------------------Получение ID последней записи-----------------------
  if LastRecordingSession=0 then
    begin
      ShowMessage('Не удалось получить значение счетчика LastRecordingSession, которое равно'+ inttostr(LastRecordingSession));
      exit;
    end;
  //Запись информации о КИ
  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Text:='INSERT INTO Key_User '
    +'([Id_Table_Of_Key_Media],[Name_System],[Appointment_Of_Key_In_The_System],[Issued_Keys],[Name_Of_The_Holder_Of_The_Keys],'
    +'[Number_Of_Key],[Type_Key],[Term_Deysviya_Key_Or_Key_Carrier],[Date_Of_Issue_Identifier],'
    +'[Valid_From],[Valid_To])'
    +'VALUES(:Id_Table_Of_Key_Media_Parameters,:Name_System_Parameters,:Appointment_Of_Key_In_The_System_Parameters,:Issued_Keys_Parameters,'
    +':Name_Of_The_Holder_Of_The_Keys_Parameters,:Number_Of_Key_Parameters,:Type_Key_Parameters,'
    +':Term_Deysviya_Key_Or_Key_Carrier_Parameters,:Date_Of_Issue_Identifier_Parameters,:Valid_From_Parameters,:Valid_To_Parameters)';
  DataModule1.ADOQuery1.Parameters.ParamByName('Id_Table_Of_Key_Media_Parameters').Value:=LastRecordingSession; //ID Записи
  DataModule1.ADOQuery1.Parameters.ParamByName('Name_System_Parameters').Value:=TempDataFromMemory[1];
  DataModule1.ADOQuery1.Parameters.ParamByName('Appointment_Of_Key_In_The_System_Parameters').Value:=TempDataFromMemory[4];
  DataModule1.ADOQuery1.Parameters.ParamByName('Issued_Keys_Parameters').Value:=TempDataFromMemory[5];
  DataModule1.ADOQuery1.Parameters.ParamByName('Name_Of_The_Holder_Of_The_Keys_Parameters').Value:=TempDataFromMemory[6];
  DataModule1.ADOQuery1.Parameters.ParamByName('Number_Of_Key_Parameters').Value:=TempDataFromMemory[10];
  DataModule1.ADOQuery1.Parameters.ParamByName('Type_Key_Parameters').Value:=TempDataFromMemory[11];
  DataModule1.ADOQuery1.Parameters.ParamByName('Term_Deysviya_Key_Or_Key_Carrier_Parameters').Value:=TempDataFromMemory[13];
  if ((TempDataFromMemory[19]='0')or(TempDataFromMemory[19]=''))
          then
            DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Identifier_Parameters').Value:=null
            else
              DataModule1.ADOQuery1.Parameters.ParamByName('Date_Of_Issue_Identifier_Parameters').Value:=StrToDate(TempDataFromMemory[19]);
        if ((TempDataFromMemory[20]='0')or(TempDataFromMemory[20]=''))
          then
            DataModule1.ADOQuery1.Parameters.ParamByName('Valid_From_Parameters').Value:=null
            else
              DataModule1.ADOQuery1.Parameters.ParamByName('Valid_From_Parameters').Value:=StrToDate(TempDataFromMemory[20]);
        if ((TempDataFromMemory[21]='0')or(TempDataFromMemory[21]=''))
          then
            DataModule1.ADOQuery1.Parameters.ParamByName('Valid_To_Parameters').Value:=null
            else
              DataModule1.ADOQuery1.Parameters.ParamByName('Valid_To_Parameters').Value:=StrToDate(TempDataFromMemory[21]);
  try
    DataModule1.ADOQuery1.ExecSQL;
  except
    ShowMessage('Произошла ошибка при добавлении данных в Кey_User на данном этапе ключевой носитель с такими параметрами был только что добавлен но КИ добавить не поулучилось');
  end;
  {
  DataModule1.ADOQuery1.SQL.Text:='SELECT @@IDENTITY';
  DataModule1.ADOQuery1.Open;
  LastRecordingSession:=DataModule1.ADOQuery1.Fields[0].Value; //Получаю ID ТАБЛИЦЫ
  ShowMessage(inttostr(LastRecordingSession));
  DataModule1.ADOQuery1.Locate('Id_Tabele_of_Key_Media',LastRecordingSession,[])
  }
  end;{Самый конец}





Это сообщение отредактировал(а) ivanfr - 27.9.2012, 13:41
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1092 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.