Форум: "Базы";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
ВнизПомогите составить запрос Найти похожие ветки
← →
Василич (2002-07-04 17:32) [0]Добрый день ! Я не самый великий знаток SQL, но вот пришлось написать небольшую программу, и я попал в тупик с одним запросом. Значит, есть куча таблиц-справочников, большинство из них состоит из двух полей - ID и названия предмета. Одна таблица сводная, выглядит примерно так:
ID | Name | ID1 | ID2 | ID3 | ID4 | ID5 | ID6
------------------------------------------
| | | | | | |
где ID1..ID6 - соответственно ID из других таблиц. Надо в эту вводную таблицу ввести запись, причем пользователем, естественно, вводятся не IDs, а названия предметов из таблиц-справочников. В программе используется ADODataset. Понимаю, задача тривиальная, прошу не бить за тупость, помогите, плиз ! Заранее благодарю.
← →
Johnmen (2002-07-04 17:39) [1]SELECT ... FROM Table1, Table2, ...
WHERE (Table1.ID1=Table2.ID2) and (Table1.ID1=Table3.ID3) and ...
← →
Василич (2002-07-04 17:43) [2]>>Johnmen
Я разобрался, как производить выборку (на самом деле не совсем так, как ты написал, но неважно). Мне надо ВВЕСТИ запись.
В датасете есть параметры типа :ID1, :ID2. Как составить запрос таким образом, чтобы, допустим, название предмета вводилось пользователем в ComboBox, затем по этому значению находился ID этого названия в справочнике, и оно вводилось в сводную таблицу?
← →
Johnmen (2002-07-04 17:49) [3]О, это надо ручками, предварительно продумав алгоритм...
← →
Василич (2002-07-04 18:08) [4]Странно, мне казалось, если львиная доля баз данных устроена таким образом, то присутствующим здесь программерам не составит труда подсказать, как именно составить этот дурацкий запрос.
Еще небольшое дополнение: если пользователь не вводит значение в какой-нибудь ComboBox, то в таблицу в соответствующее поле должен записаться NULL.
← →
Johnmen (2002-07-04 18:17) [5]Весь смысл в том, что одним запросом не обойтись, раз изменяются данные в нескольких таблицах...
← →
Viewer (2002-07-04 18:28) [6]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;
← →
Delirium (2002-07-04 18:37) [7]> Василич
См. DBLookupComboBox
← →
Blondin (2002-07-05 11:32) [8]Точно DBLookUpComboBox,
В FieldsEditore пропиши Lookup поля и делай через Edit\Append \Post
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c