|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
||||||
из ms sql в dbf- файл26.07.2012, 11:13. Показов 3931. Ответов 18
Метки нет (Все метки)
Добрый день!
Подскажите пожалуйста,как реализовать? имеется dbf-файл(dbase4), он как шаблон, нужно сделать следующее: Имеется база в ms sql, есть селект такого вида select a1,a2 from base where условие a1 in (select ... from ... where...), в общем вложенные запросы. Тупой вопрос,но запутался как вставить этот результат в определенную таблицу dbf файла. Использую компоненты: dbgrid,ttable,adoconnection,adoquery итп Как то в уже заполненный dbf вставлял определенное значение таким образом:
А теперь как мне сам селект вставить по строчно, т.е. если в селекте 10 строк , то все они по порядку вставились в dbf
0
|
||||||
| 26.07.2012, 11:13 | |
|
Ответы с готовыми решениями:
18
Нужно внешний DBF файл - добавить в SQL таблицу Как "доказать" Delphi, что файл с расширением не DBF - все таки dbf |
|
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
|
||
| 28.07.2012, 03:30 | ||
|
0
|
||
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
|||||||
| 28.07.2012, 10:21 | |||||||
1
|
|||||||
|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
||||||||||||
| 28.07.2012, 17:14 [ТС] | ||||||||||||
|
мне нужно получается 54 AdoQuery использовать,на что мне прога после 4 или 5 не помню точно говорит, что слишком много их....пришла идея,а не использовать мне функцию,в которой будет один AdoQuery, но по параметрам выбирать то значение из базы которое мне нужно.Пишу так:
в цикле с другими так
0
|
||||||||||||
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
|||||||
| 28.07.2012, 19:33 | |||||||
|
Повторяю пример, который должен работать безусловно:
0
|
|||||||
|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
|||||||
| 28.07.2012, 22:57 [ТС] | |||||||
|
Может что не понимаю,посмотрите пожалуйста: Делаю так:
селект у меня вложенный,т.е. отбираю значения которые мне нужны по id_field,из которых мне необходимо раскидать по 54 столбцам свое...можете наблюдать по sql,который я привел вверху Добавлено через 4 минуты т.е. id_fileld=столбцу в dbf файле
0
|
|||||||
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
||||||
| 28.07.2012, 23:20 | ||||||
|
В принципе сложновато, но имеете право.
Мне только непонятно одно место:
Или таблица подключена к DBGrid1. Тогда тем более нельзя еще и Edit делать. И зачем DBGrid1.DataSource.DataSet.Next ? Он вроде в While..EOF не участвует.
0
|
||||||
|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
|
| 28.07.2012, 23:46 [ТС] | |
|
albor,
открываю таблицу через dbgrid, в котором datasourse в датасете связан с ttable. поэтому по привычке так делаю,скорей всего можно и убрать это.хотя как мы будем переходить к другой строке в датасете?в таблице?Если честно меня больше всего интересует вопрос,как всё таки вставить данные?через один запрос не получиться правильно же?конечно хотелось бы через функцию делать,чтобы передать необходимы параметры, а в самой в функции был один запрос. Сможете помочь разобраться?
0
|
|
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
|||||||
| 29.07.2012, 00:27 | |||||||
|
открываю таблицу через dbgrid, в котором datasourse в датасете связан с ttable. поэтому по привычке так делаю,скорей всего можно и убрать это. Не можно, а нужно. Иначе черт знает что получается..(с) хотя как мы будем переходить к другой строке в датасете?в таблице? К какой другой. Append это и есть другая строка. Если честно меня больше всего интересует вопрос,как всё таки вставить данные? через один запрос не получиться правильно же? конечно хотелось бы через функцию делать,чтобы передать необходимы параметры, а в самой в функции был один запрос. Почему нет, все можно сделать. Если я правильно понял, Вам нужно собрать данные из четырех строк таблицы PS_PAYMENT_ADDFL и занести (добавить) их в одну строку Вашей Table. Т.е. в минимальном случае в исходной таблице существуют (обязательно) четыре строки с значениями id_field=55,54,92 и еще какое-то, которое Вы вводите сами. А прочесть нужно FIELD_MONEY или FIELD_STRING. Давайте их объединим в одном запросе:
1
|
|||||||
|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
||
| 29.07.2012, 09:27 [ТС] | ||
|
Добавлено через 7 минут всё таки думал на счет функции(get_select), она отрабатывает но получается для всех проходов только один раз. Кажется что так по проще будет,одна функция, только будут значения отбираться по 54 параметрам Добавлено через 6 минут чтобы понятней Вам было: PS_PAYMENT_ADDFL состоит из id_object|id_field|field_date|field_mone y|field_string PS_PAYMENT и PS_PAYMENT_ADDFL связаны по id_object PS_PAYMENT - это таблица с платежами принятые организацией с доп.полями таблицы PS_PAYMENT_ADDFL. Добавлено через 5 минут т.е. PS_PAYMENT_ADDFL это таблица где хранятся доп.поля платежей но разбор данный что есть что обозачается в id_field т.е. если строка с id_field=46- это общая сумма платежа если id_field=44 - дата платежа если id_field = 55 - код организации итд
0
|
||
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
||
| 29.07.2012, 09:35 | ||
|
Итак, для каждой строки PS_PAYMENT (Мастер) существует 54 строки в таблице PS_PAYMENT_ADDFL (детали). связь по PS_PAYMENT.id_object=PS_PAYMENT_ADDFL.id _object похоже, что этот id_object надо и в выходную таблицу писать, да? а там (детали) точно всегда 54 строки, не может быть что их окажется иногда 45 .. ?
0
|
||
|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
|
| 29.07.2012, 09:55 [ТС] | |
|
кто ж , начальство
да,все вроде верно id_field всегда 54(точнее у нас их больше ста,но нужно 54) Добавлено через 3 минуты albor, id_field не по порядку от 1..54, а в разброс, и 92 и 4 и 55, в общем 54 разных из общего числа
0
|
|
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
|||||||
| 29.07.2012, 10:54 | |||||||
Сообщение было отмечено как решение
Решение
А дальше, наверно, и сами сделаете.
1
|
|||||||
|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
|
| 29.07.2012, 17:43 [ТС] | |
|
знаете не могу понять,а как будут распределяться значения в дбф файле?имею в виду, по кодам.
т.е. в массив заносятся значения, потом локайтем ищем ид по SourceFieldID из массива и добавляем но как добавиться в таблицу?последовально как задали в массиве?или как? не надо сапоставлять поле в дбф файле и код из таблицы?
0
|
|
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
||||||||||||
| 29.07.2012, 18:14 | ||||||||||||
0
|
||||||||||||
|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
|
| 30.07.2012, 17:52 [ТС] | |
|
а ну да,логично не подумал.
Прошу прощения,завтра буду пробовать на работе. Добавлено через 17 часов 15 минут albor, наверно надоел я Вам,если можно то ещё один вопрос, как сделать так чтобы? когда мы берем значения по "FIELD_MONEY" V:=AdoQuery.FieldByName('FIELD_MONEY').V alue;в саму sql попадают значения в поля FIELD_MONEY,FIELD_STRING,FIELD_DATE,соот ветственно если одно поле заполнено, то остальные пустые. как тогда мне сделать чтобы для определенных кодов массива DestFieldNames бралось из ado либо FIELD_MONE либо остальные? Добавлено через 25 минут если оставить как есть,то ошибка звучит так "Ошибка неизвестного типа" Добавлено через 12 минут по поводу ошибки разобрался, цикл был на 1 больше Добавлено через 14 минут также если мы просто отбираем за дату платежи, например их 10 платежей было(причем у каждого платежа свои доп.поля в таблице PS_PAYMENT_ADDFL), сейчас добавляется в дбф только 1 запись и то берет то из одного платежа,то другой Добавлено через 5 часов 0 минут albor, вы не читайте пожалуйста что я написал утром, совсем башка не варила. Можете только вот что подсказать.На данный момент вставляется одна запись в дбф файл, селект отрабатывает, результат 9 строк которые надо вставить, в дфб вставляется только первая
0
|
|
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
|||||||
| 31.07.2012, 09:23 | |||||||
0
|
|||||||
|
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
|
|
| 31.07.2012, 17:29 [ТС] | |
|
это поле закоментировал, мне нужно по всем id_object(по всем платежам которые принял оператор)
Добавлено через 2 часа 38 минут albor, и ещё если можно такой вопрос, если все таки в базе по id_fileld ,будет null, как мне те поля которых нет, вставить в базу со значением 0 ??? Добавлено через 36 секунд * вставить в дбф - файл
0
|
|
|
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
|
||||||||
| 31.07.2012, 18:30 | ||||||||
|
Я бы на вашем месте сделал так (добавить AdoQuery2 как Мастер):
1
|
||||||||
| 31.07.2012, 18:30 | |
|
Помогаю со студенческими работами здесь
19
SQL в DBF !!! Помогите!!! пишет что .dbf файл не найден, хотя .accdb файл есть Ms Sql и Dbf в локальной сети Конвертация базы из sql в dbf Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|