主页
Top.Mail.Ru Yandeks.Metrika
论坛:“基地”;
当前存档: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]

>>约翰曼
Я разобрался, как производить выборку (на самом деле не совсем так, как ты написал, но неважно). Мне надо ВВЕСТИ запись.

В датасете есть параметры типа :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;
开始
with quOne do
开始
关闭;
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;
结束;
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
开始
SQL.Add("UIDC=:UIDC,");
ParamByName("UIDC").AsInteger := User.Id;
结束;
SQL.Add("UID=:UID");
ParamByName("UID").AsInteger := User.Id;
SQL.Add("WHERE ID=:ID");
ParamByName("ID").AsInteger := pId;
quExecSQL_(quOne);
结束;
结束;
结束;



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.58 MB
时间:0.032 c
14-81471
RV
2002-06-27 11:10
2002.07.25
雅阁AMD3。 怎么扔掉?


1-81276
安迪bitoff
2002-07-15 12:58
2002.07.25
Delphi6函数的完整描述


1-81344
亚历山大
2002-07-12 19:57
2002.07.25
帮帮我搞清楚


14-81441
舒宾
2002-06-27 16:24
2002.07.25
我需要一个组件


3-81155
BOL
2002-07-02 20:47
2002.07.25
您需要在本地PC上安装到InerBase上的数据库





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский