![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Доброе время суток уважаемые программисты! Не могли бы вы помочь мне в следующем вопросе. Имеется таблица в EXCEL в ней 5 столбцов надо их отправить в бд по следующим запросам:
добавление INSERT INTO ZKOKS.OLD_NUMBER (ID, REG_ID, TYPE, NUM) VALUES (:ID, :REG_ID, :TYPE, :NUM) изменение UPDATE ZKOKS.OBJ SET INV_NUM = :INV_NUM, CAD_NUM = :CAD_NUM WHERE (OBJ.CAD_NUM = 'список') подключение к базе я реализовал, таблицу выгрузил в StringGrid? а как связать эту таблицу по средством запроса с БД не знаю. ![]() |
#2
|
||||
|
||||
![]() А с чего вдруг в StringGrid? Сей компонент не заточен под работу с базами. Используйте TDBGrid.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Сделал через DBGrid, а как дальше реализовать?
|
#4
|
||||
|
||||
![]() Поскольку вам надо делать запрос, то подключение через OLE вам не поможет, значит подключаемся к таблице через ADO. Используем примерно такую строку подключения:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Отпуска.xls;Extended Properties=Excel 8.0;Persist Security Info=False Далее для проверки выполняем запрос к нужному листу в таблице: select * from [Лист1$] Все данные с листа экселя прочитаны. С подключением и чтением данных разобрались. Теперь поясните ваш пост. 1. Вы пишете 5 столбцов, а в запросе вижу только 4. 2. Из экселя считываются все данные или есть критерий какой-то 3. В какую базу надо записать? Об этом ни слова. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
![]() Цитата:
Как раз таки я так и сделал. 1.Насчет столбцов можно увидеть в архиве 2.Из экселя, который я выгрузил в DBGrid необходимы по первому запросу 4 поля, а вот по второму другие 2 (но они тоже имеются в таблице) 3. В базу ORACLE надо выгрузить (подключение к ней реализовал через SQLConnection) |
#6
|
||||
|
||||
![]() Ага, уже проясняется. Конечно тут вроде напрашиваются гетерогенные запросы, но я в них не силен, особенно с подключением к ораклу, а потому пойдем нешустрым, но надежным путем.
![]() (Непосредственно для передачи данных нам грид не потребуется. Разве что посмотреть, что собственно копируется.) Значит имеем 2 подключения к разным базам. Пишем такой код: Код:
SQLQuery1.SQL.Text := 'insert into OracleTable (Fld1,Fld2,Fld3,Fld4,Fld5) Values(:Val1, :Val2, :Val3, :Val4, :Val5)'; while not AdoQuery1.Eof do begin SQLQuery1.Params.ParamValues['Val1'] := AdoQuery1.FieldValues['Fld1']; SQLQuery1.Params.ParamValues['Val2'] := AdoQuery1.FieldValues['Fld2']; SQLQuery1.Params.ParamValues['Val3'] := AdoQuery1.FieldValues['Fld3']; SQLQuery1.Params.ParamValues['Val4'] := AdoQuery1.FieldValues['Fld4']; SQLQuery1.Params.ParamValues['Val5'] := AdoQuery1.FieldValues['Fld5']; SQLQuery1.ExecSQL; AdoQuery1.Next; end; Вроде должно работать. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 31.07.2013 в 14:00. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
demon-sheff (01.08.2013)
|