![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите составить запрос [D6, MSSQL]
Василич © (2002-07-04 17:32:00)Добрый день ! Я не самый великий знаток SQL, но вот пришлось написать небольшую программу, и я попал в тупик с одним запросом. Значит, есть куча таблиц-справочников, большинство из них состоит из двух полей - ID и названия предмета. Одна таблица сводная, выглядит примерно так:
ID | Name | ID1 | ID2 | ID3 | ID4 | ID5 | ID6
------------------------------------------
| | | | | | |
где ID1..ID6 - соответственно ID из других таблиц. Надо в эту вводную таблицу ввести запись, причем пользователем, естественно, вводятся не IDs, а названия предметов из таблиц-справочников. В программе используется ADODataset. Понимаю, задача тривиальная, прошу не бить за тупость, помогите, плиз ! Заранее благодарю.
Blondin (2002-07-05 11:32:00) [1]Точно DBLookUpComboBox,
В FieldsEditore пропиши Lookup поля и делай через Edit\Append \Post
Delirium (2002-07-04 18:37:00) [2]> Василич
См. DBLookupComboBox
Viewer (2002-07-04 18:28:00) [3]procedure TfmGRMenu.m_UpDate;
begin
with quOne do
begin
Close;
SQL.Clear;
SQL.Add("UPDATE "+ pTbName);
SQL.Add("SET");
SQL.Add("DATER=:DATER,");
if pAppend then begin
SQL.Add("USER_ID=:USER_ID,");
SQL.Add("PAR_ID=:PAR_ID,");
ParamByName("USER_ID").AsInteger := frLook.pIDL; // нужный тебе id
ParamByName("PAR_ID").AsInteger := frDBTree.tv.GetId;
end;
SQL.Add("chkVisible=:chkV,");
SQL.Add("chkEnabled=:chkE,");
ParamByName("chkV").AsBoolean := chkVisible.Checked;
ParamByName("chkE").AsBoolean := chkEnabled.Checked;
ParamByName("DATER").AsDateTime := Date;
if pAppend then
begin
SQL.Add("UIDC=:UIDC,");
ParamByName("UIDC").AsInteger := User.Id;
end;
SQL.Add("UID=:UID");
ParamByName("UID").AsInteger := User.Id;
SQL.Add("WHERE ID=:ID");
ParamByName("ID").AsInteger := pId;
quExecSQL_(quOne);
end;
end;
end;
Johnmen (2002-07-04 18:17:00) [4]Весь смысл в том, что одним запросом не обойтись, раз изменяются данные в нескольких таблицах...
Василич (2002-07-04 18:08:00) [5]Странно, мне казалось, если львиная доля баз данных устроена таким образом, то присутствующим здесь программерам не составит труда подсказать, как именно составить этот дурацкий запрос.
Еще небольшое дополнение: если пользователь не вводит значение в какой-нибудь ComboBox, то в таблицу в соответствующее поле должен записаться NULL.
Johnmen (2002-07-04 17:49:00) [6]О, это надо ручками, предварительно продумав алгоритм...
Василич (2002-07-04 17:43:00) [7]>>Johnmen
Я разобрался, как производить выборку (на самом деле не совсем так, как ты написал, но неважно). Мне надо ВВЕСТИ запись.
В датасете есть параметры типа :ID1, :ID2. Как составить запрос таким образом, чтобы, допустим, название предмета вводилось пользователем в ComboBox, затем по этому значению находился ID этого названия в справочнике, и оно вводилось в сводную таблицу?
Johnmen (2002-07-04 17:39:00) [8]SELECT ... FROM Table1, Table2, ...
WHERE (Table1.ID1=Table2.ID2) and (Table1.ID1=Table3.ID3) and ...