Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 27.02.2019
Сообщений: 4
Delphi 6-7

Добавление отчётного периода

19.03.2019, 22:35. Показов 783. Ответов 11
Метки ado, db (Все метки)

Студворк — интернет-сервис помощи студентам
Есть база данных с финансовыми показателями, которая сортируется по годам и кварталам.
Нужно чтоб по нажатию кнопки, в таблицу Balans добавлялись все строки из таблицы StrokiBalansa и к каждой присваивались выбранные в ComboBox1 и ComboBox2 год и квартал.

Каким образом это можно осуществить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2019, 22:35
Ответы с готовыми решениями:

Период из запроса разбить на начало периода и конец периода
есть запрос "выбрать оборотыпродажи. период как период из продажиобороты " на выходе имеем поле период которое указывается в...

Создание отчетного документа
Всем Доброго времени суток! Хочу узнать советы Форумчан, по поводу создания отчетной формы из приложения. Изначально отчет был создан в...

Формат периода
Привет всем, Помогите найти ошибку в формате периода "Обороты за"+ Выбор Когда &Переодичность=6 Тогда...

11
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
20.03.2019, 07:01
В ADOQuery в свойство SQL пишем

SQL
1
2
3
INSERT INTO Balans (ПоляТаблицыStrokiBalansaКудаВносятсяДанныеЧерезЗапятую)
SELECT b.*, :ДанныеИзCombobox1, :ДанныеИзCombobox2
FROM Balans b
Потом в обработчике нажатия кнопки

Delphi
1
2
3
ADOQuery.Parameters.ParamByName('ДанныеИзCombobox1').Value := Combobox1.Text;
ADOQuery.Parameters.ParamByName('ДанныеИзCombobox2').Value := Combobox2.Text;
ADOQuery.Execute;
Вместо ДанныеИзCombobox2 (двоеточие в запросе SQL не удалите случайно, они там указывают, что это параметры, а не название столбца или переменной) и прочим надписям ставите либо название параметров, либо то, что написано в самом тексте. Тут придется чуть-чуть напрячь голову. Количество столбцов в INSERT должно соответствовать количеству столбцов в SELECT. Что-то более вменяемое вам ответить по количеству информации, которую вы предоставили, навряд ли удастся.

Ну а дальше, как говорится, размахнись ваша рука, раззудись ваше плечо.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
20.03.2019, 07:41
я давно уже прежде чем думать, как это осуществить, задаюсь вопросом "а нужно ли это осуществлять"
и вот тут есть подозрение, что нет...
если вы не строите систему федеральной торговой сети с миллионами транзакций в день, то все что вычисляется в запросе, должно вычисляться в запросе. и не надо ничего никуда писать

а если вас двое на разных компьютерах нажмет кнопку?
а если нажать эту кнопку 10 раз подряд?
а если завтра нажать с теми де значениями комбо?
это не база. это просто мусорная свалка получится
0
0 / 0 / 0
Регистрация: 27.02.2019
Сообщений: 4
20.03.2019, 17:36  [ТС]
Вышла ошибка
Повторение получателя 'Название'
Delphi
1
2
3
4
5
6
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO Balans (Название, КодСтроки)');
ADOQuery1.SQL.Add('SELECT b.*, :Combobox1, :Combobox2');
ADOQuery1.SQL.Add('FROM Balans b');
ADOQuery1.Parameters.ParamByName('Combobox1').Value := Combobox1.Text;
ADOQuery1.Parameters.ParamByName('Combobox2').Value := Combobox2.Text;
Не знаете в чём дело?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
20.03.2019, 23:15
вы знаете, что обозначает * в запросе? - вместо нее встанут все поля этой таблицы
даже если вы не знаете SQL, но слова-то английские не самые сложные.
давайте переведем на русский

ВСТАВИТЬ В ТАБЛИЦУ Balans в поля (Название, КодСтроки)
ВСЕ!!!! строки и ВСЕ!!!! поля из таблицы Balans плюс еще два поля с текстом из комбобоксов!
о как!
как вы собираетесь впихнуть все поля в два??
а зачем всю таблицу вставлять саму в себя еще раз???

странненькое желание...
0
0 / 0 / 0
Регистрация: 27.02.2019
Сообщений: 4
21.03.2019, 00:42  [ТС]
Почему таблицу саму в себя? Я же в самом первом сообщении написал что ИЗ таблицы StrokiBalansa, это другая таблица, в которой просто задан образец, перечень строк который в основной БД дублируется с каждым кварталом где столбец название связан со столбцом КодСтроки.

Попробую объяснить понятнее, есть таблица Balans со столбцами:
Название (какой то финансовый показатель)
КодСтроки
Год
Квартал
И числовой столбец в который вписываются значения того или иного финансового показателя

Мне нужно чтобы я выбрал в комбобоксах год и квартал и по нажатию кнопки в эту таблицу заново вписались 20 строк Название и КодСтроки (которые прописаны в таблице StrokiBalansa и связаны по полю КодСтроки) и чтоб ко всем этим строкам ещё присвоились год и квартал из комбобоксов в столбцы Год и Квартал

Возможно я как то непонятно выражаю свою проблему, прошу извинить, я совсем слабо в этом разбираюсь. Если как то поможете буду благодарен
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
21.03.2019, 00:47
писать вы можете что угодно, тут авторам никто не верит )
я код читаю
INSERT INTO Balans
...
SELECT ... FROM Balans b
0
0 / 0 / 0
Регистрация: 27.02.2019
Сообщений: 4
21.03.2019, 00:56  [ТС]
Мне особо без разницы кто кому верит, мне разобраться нужно. Ваше первое сообщение в этой теме вообще ни к чему, а код на который вы ссылаетесь написал человек выше. Я просто говорю что вы неправильно меня поняли
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
21.03.2019, 01:02
вы начните колбасу кусочками резать, а не сразу всей палкой есть...
1. научитесь выбирать нужные строки из таблицы StrokiBalansa
никуда не вставляя, просто на экран...
делфи для этого тоже не особо нужна. формируйте SQL запрос на инструменте, который к вашему серверу приложен.
(вообще неплохо бы сообщать что за сервер вы используете, и версию делфи. иногда от этого много зависит)
https://www.w3schools.com/sql/sql_where.asp

2. а если эти строки там уже есть, то что?? второй раз их вставлять?
может сначала нужно удалить их?
но для этого нужно сформулировать условие
по какому признаку вы отберете строки, которые собираетесь удалять
можете словами пока...
потом постройте SQL запрос на удаление
https://www.w3schools.com/sql/sql_delete.asp

3. прочитайте и эту страницу справочника по SQL и ПОЙМИТЕ! как формируется запрос на вставку данных
https://www.w3schools.com/sql/sql_insert.asp

все эти манипуляции делайте на сервере с помощью неведомого нам пока инструмента
и вот когда SQL запросы будут готовы и отлажены, мы просто вставим их в Query.SQL.Text с параметрами и выполним

Добавлено через 2 минуты
никто не собирается над вами глумиться
просто без знания SQL хотя бы начального, вам дальше не пройти
за вас запросы писать тоже никто не будет
да и для любого запроса нужна полная конкретика о структуре данных, а не просто описание того, что вы хотите сделать
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
21.03.2019, 08:32
Цитата Сообщение от sk1F25 Посмотреть сообщение
Почему таблицу саму в себя?
Потому что я невнимательно написал, а вы повторили. История, в целом, та же, что и с звездочкой. Если внимательнее читать, то моя ошибка была бы очевидна, как и способ исправления.

SQL
1
2
3
INSERT INTO StrokiBalansa (ПоляТаблицыStrokiBalansaКудаВносятсяДанныеЧерезЗапятую)
SELECT b.*, :ДанныеИзCombobox1, :ДанныеИзCombobox2
FROM Balans b
P.S. читайте информацию о запросах SQL. Я таким образом мог написать вам запрос, который просто очистит обе ваши таблицы, а вы бы его без задней мысли выполнили у себя.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
21.03.2019, 09:31
и все-таки использовать звездочку в запросах - это почти
Цитата Сообщение от Nanotentacle Посмотреть сообщение
написать вам запрос, который просто очистит обе ваши таблицы
не так фатально, но мина замедленного действия
0
21.03.2019, 09:35

Не по теме:

Цитата Сообщение от krapotkin Посмотреть сообщение
и все-таки использовать звездочку в запросах - это почти
Согласен. Такое у нас код ревью не проходит. Но если человек не пытается разобраться, а просто копипастит, то для него практически любой код будет такой миной.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2019, 09:35
Помогаю со студенческими работами здесь

Определение периода
Здравствуйте. При анализе графика собственно встал вопрос: а как можно определить период или частоту сигнала, например sin(x)? Мне...

Нахождение периода
Доброй ночи) Подскажите, как в Mathcad найти период(максимально точно), если функция является одномерным массивом экспериментальных данных....

Измерение периода
К сообщению прикрепил головную боль...Вообщем так нашёл в интернете статью вот По данному примеру сделал, но только через PCINT. Но как...

Трудности начального периода
Пытаюсь освоить Java. Установил NetBeans 7.3.1. Пытаюсь сделать апплет по скачанным урокам. Подскажите плиз - чо ей не так?

Выбор периода из календаря
При указании в условиях запроса функции, например, такого рода: Between And при запуске запроса появляется окошко для введения этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru