Добавление данных в бд через DBLookupComboBox

galaxystar
Дата: 23.05.2011 19:32:12
Доброе время суток. Столкнулся с такой проблемой. Есть компонент DBLookupCombobox настроен следующим образом:


DataField - kod_oblas | Таблица для записи параметров
DataSource - DM2.DSAdress |

KeyField - kod_oblas | Таблица откуда берутся данные
ListField - name |
ListSource - DM2.DSOblast |

* DM - DataModule
DSOblast - DataSource

В таблицу Adress должно вводиться данные (Index) с таблицы Oblas.
Есть процедура которая добавляет данные в таблицу Adress. При таком коде в таблицу вбиваются данные, но они меняют первую строку постоянно, т.е. данные которые заносятся в таблицу не записываются в новую строку, а меняет первую строку в таблице.
DM2.ADOTAdress.Insert;
DM2.ADOTOblast.Insert;
DM2.ADOTRaion.Insert;
DM2.ADOTNasPunkt.Insert;
DM2.ADOTUlica.Insert;
Как сделать так чтобы при использование DBLookupCombobox данные заносились бы в новую строку таблицы?
P.S.
Еще один вопрос: Можно ли записывающий параметр DataField использовать в хранимой процедуре для передаче его значения в параметр хранимой процедуры? :
DM2.Connection.BeginTrans;
              with DM2.ADOSPAdress do
                begin

                  Parameters.ParamByName('@kod_adress_1').Value:=DBLFioID.DataField;
                  Parameters.ParamByName('@kod_nas_punkt_2').Value:=DBLNasPunktID.DataField;
                  Parameters.ParamByName('@kod_raion_3').Value:=DBLRaionID.DataField;
                  Parameters.ParamByName('@kod_ulica_4').Value:=DBLUlicaID.DataField;
                  Parameters.ParamByName('@kod_oblas_5').Value:=DBLOblastID.DataField;
                end;
              DM2.ADOSPAdress.ExecProc;
              DM2.Connection.CommitTrans;
        except
          DM2.Connection.RollbackTrans;
          ShowMessage('Íåâîçìîæíî âûïîëíèòü. Ïîâòîðèòå!');
        end;  }
т.е. лучше было бы использовать запись в таблицу через хранимую процедуру и DBLookupComboBox

Модератор: Тема перенесена из форума "Microsoft SQL Server".
Johnmen
Дата: 23.05.2011 20:24:18
1.
Здесь приведено добавление записи в 5 (пять) таблиц. Точнее говоря, перевод пяти наборов данных в режим вставки новой записи.
И причем здесь Лукапкомбобокс?

2.
А что будет значить
Parameters.ParamByName('@kod_oblas_5').Value:='kod_oblas';
?

PS
М.б. стОит начать с читки учебника?
galaxystar
Дата: 24.05.2011 05:16:43
Johnmen
А что будет значить
Parameters.ParamByName('@kod_oblas_5').Value:='kod_oblas';
?

Получается при выборе необходимых данных в DBLookupComboBox данные будут заноситься по "kod_oblas"?
Anatoly Podgoretsky
Дата: 24.05.2011 08:54:52
Lookup значит смотреть (читать)
galaxystar
Дата: 24.05.2011 15:30:18
Время доброе, Помогите пожалуйста. Разобраться с добавлением записей в SQL при помощи хранимой процедуры. Ничего не могу в интернете, кроме одного.
ADOQuery1.Parameters[1].Value := 
  DBLookupComboBox1.DataSource.DataSet.FieldByName(DBLookupComboBox1.KeyField).Value;
Можно ли сделать так же, но не через "ADOQuery", а через "ADOStoredProc"?
Попробовал вводить у себя в проекте "DataSource" и "DataSet" есть, а вот "FieldByName(DBLookupComboBox1.KeyField).Value" нету.
Как быть? помогите пожалуйста!
Vladimir2009
Дата: 24.05.2011 16:15:13
galaxystar,

DBLookupComboBox1.KeyValue
galaxystar
Дата: 24.05.2011 17:28:11
Владимир огромное спасибо
Vladimir2009
galaxystar,

DBLookupComboBox1.KeyValue



В результате получилось !!!!!!
Try
            DM2.Connection.BeginTrans;
              with DM2.ADOSPAdress do
                begin

                  Parameters.ParamByName('@kod_adress_1').Value:=DBLFioID.KeyValue;
                  Parameters.ParamByName('@kod_nas_punkt_2').Value:=DBLNasPunktID.KeyValue;
                  Parameters.ParamByName('@kod_raion_3').Value:=DBLRaionID.KeyValue;
                  Parameters.ParamByName('@kod_ulica_4').Value:=DBLUlicaID.KeyValue;
                  Parameters.ParamByName('@kod_oblas_5').Value:=DBLOblastID.KeyValue;
                end;
              DM2.ADOSPAdress.ExecProc;
              DM2.Connection.CommitTrans;
        except
          DM2.Connection.RollbackTrans;
          ShowMessage('Íåâîçìîæíî âûïîëíèòü. Ïîâòîðèòå!');
        end;
galaxystar
Дата: 24.05.2011 17:29:26
Всем СПАСИБО за участие.
Тема закрыта.