![]() |
|
Модераторы: gambit |
![]()
|
|
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
В общем возникла такая проблема: нужно сохранить результаты запроса к базе типа Interbase/Firebird в DBF. По форуму поискал, но что-то ничего путного не нашёл. Есть отдельно подключение к GDB базе, есть отдельно к DBF таблице(файлу), а так чтобы связать их - нету. Суть заключается в следующем:
Примерный запрос к GDB базе:
DBF файл используется только для сохранения результатов этого запроса, причём каждый раз создаётся заново а не дополняется. Кто скалкивался с подобным посоветуйте плз, как реализовать? --------------------
Даешь открытые исходники! |
|||
|
||||
| LuMee |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
А в чем конкретно проблема? Выгружаем данные из Interbase в DataTable, потом создаем dbf-файлик и с помощью DataAdapter'a данные в него выгружаем. В лицах сохранение будет выглядеть наподобие такого:
|
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Не совсем понятен смысл этого:
В результате выполнения вышеуказанного запроса формируется прайс на 5000 наименований. Не вижу реального смысла использования команды INSERT. Тем более никаких изменений в таблице DataTable после получения в неё результатов запроса не должно быть. Она должна быть сохранена в DBF в том видеб в котором есть. --------------------
Даешь открытые исходники! |
|||
|
||||
| LuMee |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
Не, ну INSERT-команда адаптеру полюбому нужна, чтобы он знал, как правильно данные сохранять. Можно попробовать без нее, вдруг догадается использовать названия полей DataTable'а (хотя сомневаюсь), тогда только надо будет ему connection string объяснить.
P.S. да, под фразой "по числу полей" я подразумевал не 5000 наименований, а "по числу столбцов полученной выборки" Это сообщение отредактировал(а) LuMee - 6.8.2007, 14:18 |
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Так я в принципе разобрался, решил попробовать таким образом:
ЗЫЖ Создание dbf файла не стал указывать, это не так сложно... ЗЗЫЖ Сейчас опробую этот код и скажу результат. Это сообщение отредактировал(а) XavierElf - 6.8.2007, 14:34 --------------------
Даешь открытые исходники! |
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Что-то не проходит эта команды выдаётся ошибка:
Что бы это могло значить - непонятно... --------------------
Даешь открытые исходники! |
|||
|
||||
| LuMee |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
Надо посмотреть отладчиком, какой получается запрос. Вероятно, в каком-то поле выборки попалась, скажем, скобка или еще чего, в результате чего запрос получился кривой. Потому, собственно, и рекомендовал делать через параметры, тем более что полей в выборке вроде не так много. |
||||
|
|||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Сделал таким образом:
Не экспортирует в dbf. Уже даже не знаю как быть... :( --------------------
Даешь открытые исходники! |
|||
|
||||
| LuMee |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
А что за ошибку пишет? |
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Да в том-то и дело, что он даже ошибки не выдаёт...
--------------------
Даешь открытые исходники! |
|||
|
||||
| LuMee |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
Просто ничего не добавляет что ли получается? А у тебя названия параметров в INSERT-запросе и названия столбцов в сохраняемом DataTable одинаковые?
|
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Одинаковые. Самое интересное, что запрос INSERT не хочет выполняться даже для самой примитивной таблицы...
--------------------
Даешь открытые исходники! |
|||
|
||||
| LuMee |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
Ну тогда остается генерить INSERT-запрос самостоятельно и пробовать его выполнять, типа такого:
|
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Теперь он часть таблицы заполняет, а на другую часть выдаёт:
"Не совпадает число значений запроса и число результирующих полей." --------------------
Даешь открытые исходники! |
|||
|
||||
| LuMee |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
Что значит "часть таблицы"? В смысле, 10 записей добавил, а на 11ю сказал вышеозначенное сообщение? Если так, то вероятно где то в DataTable попался DBNull - нужно в этом месте писать в INSERT-запрос NULL. Посмотри отладчиком, как выглядит запрос, вызывающий ошибку
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |