| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Выборка и подстановка данных. |
| Автор: huminclouds 9.9.2009, 11:39 | ||
| Существуют две таблицы tbl1 и tbl2. Обе таблицы содержат идентичные поля с кодами продукции: code1, code2, code3 и поле с наименованиями продукции: name. tbl2 является справочником и содержит все коды и наименования продукции. tbl1 содержит несколько строк с кодами, а поле name пустое. Нужно в tbl1 в соответствии с кодами подставить наименования из tbl2. У меня код такой:
Ошибок он не выдает, но и наименования не вставляет. Поможите, кто чем сможет. |
| Автор: Данкинг 9.9.2009, 11:48 |
| С .dbf так (.edit - .post) работать и не будет (странно, что вообще ошибок не выдаёт). Вставляй запросом (insert..), или же используй TDbf. |
| Автор: huminclouds 9.9.2009, 13:15 | ||
Запросом не получится, т.к. НД подсоединены к разным БД, не спрашивайте почему, это не в моей власти. С dbf edit...post прекрасно работает, по крайней мере у меня
Попытался ускорить это дело используя вместо цикла запрос выборки. Но запрос выдает пустую строку. |
| Автор: huminclouds 9.9.2009, 15:05 | ||
Мне тут предложили воспользоваться методами Locate или Lookup. Только как правильно оформить не знаю. А конкретно, как вписать массив ключевых значений.
|
| Автор: Vas 9.9.2009, 15:46 |
| Locate('code1;code2;code3',VarArrayOf([Query1['code1'], Query1['code1'], Query1['code1']]) , []); А зачем в запросе используешь Like, а не знак "="? code- число или строка? Если строка то в запросе еще апострофы отсутсвуют. |
| Автор: huminclouds 10.9.2009, 07:56 |
| Vas спасибо. С кавычками я здорово скосячил, аж стыдно стало. Переделал like на =. Все работает. Спасибо. Locate тоже работает, даже, на мой взгляд, быстрее. |