|
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
|
|
Из AdoQuery в Edit.Text04.07.2013, 19:24. Показов 8330. Ответов 12
Метки нет (Все метки)
Уважаемые форумчане, помогите с проблемой, у самого уже мозг под вечер кипит((((
Значит необходимо получать данные ячеек с MSSQL через AdoQuery, НО используя Parameters. Например для обновления записей в таблице в Adoquery.Sql пишу Update Table1 SET Имя = :Name, Материал1 = :M1, Материал2 = :M2, where № = :ID; После чего я могу оперировать переменными Name, M1, M2 по своему усмотрению. Например: "ADOQuery1.Parameters.ParamByName('M1'). Value:=StrToFloat(Form4.Item1)". А вот как сделать чтение в переменные Name, M1, M2??? Очень давно не сталкивался с SQL запросами и маленько подзабыл... Я предполагал, что запрос должен выглядеть как то так: "Select :Name = Имя, :M1 = Материал1, :M2 = Материал2 from table1 where № = :ID" Ну или как то так: "Select Имя, Материал1, Материал2 from table1 where № = :ID Set :Name = Имя, :M1 = Материал1, :M2 = Материал2;" Да, решение типа "Edit2.Text:=Adoquery1.FieldByName('Имя' ).AsString;" не предлагать ибо для этого нужно выполнять операции типа: "Adoquery1.Active:=True; Adoquery1.Open; " и "Adoquery1.Active:=False; Adoquery1.Close;" каждый раз. А это ОЧЕНЬ СИЛЬНО влияет на скорость опроса! Нужно использовать только "AdoQuery1.ExecSQL;" Ну или можно использовать хранимую процедуру, но опять таки синтаксис sql я подзабыл((( Так сказать задача стоит в синхронизации записей между архивом устройства и архивом компьютера. Вот как то так...
0
|
|
| 04.07.2013, 19:24 | |
|
Ответы с готовыми решениями:
12
ADOQuery.Edit Из ADOQuery в Edit ADOQUERY Edit (Поле ввода) |
|
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
|
||||||||||||
| 04.07.2013, 21:02 | ||||||||||||
|
что значит
кладешь TEdit для соответствующей переменной, где-нибудь кнопку "OK", которая запустить на выполнение запрос
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
|
|||||||
| 04.07.2013, 22:20 [ТС] | |||||||
|
Типа
0
|
|||||||
|
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
|
||
| 04.07.2013, 22:47 | ||
|
извините, но это бред!
наверное, вопрос в том: как показать ЗНАЧЕНИЯ полей в TEdit или DBEdit?
0
|
||
|
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
|
|||||||||||||||||
| 04.07.2013, 23:29 [ТС] | |||||||||||||||||
|
Нет, не в DBEdit... В общем расскажу вкратце... Есть форма с OPC клиентом. Соответственно он коннектится к OPC серверу, читает и пишет данные. OPC сервер работает с ПЛК. В ПЛК хранится некий архив, на данный момент стоит задача синхронизация архива ПЛК и архива в MSSQL. Запись с контроллера в MSSQL я реализовал, а вот из MSSQL в ПЛК не выходит. Точнее выходит, но метод записи не устраивает (очень долго - 2c на запись) ибо необходимо передать 100 записей по одной.... На данный момент реализован следующий код записи из MSSQL в OPC сервер:
Код SQL в ADOQUERY Такой:
Поэтому вижу только один выход из этой ситуации - это получение следующей записи из таблицы путём обновления запроса - "AdoQuery1.ExecSQL;". В общем нужно присваивать так и только так:
0
|
|||||||||||||||||
|
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
|
|
| 04.07.2013, 23:44 | |
|
весь концепт попахивает бредом.
-------------------------- Я правильно понял: Получается, что некий цикл (a1:=a1+1 постоянно дергает sql запрос, каждый раз передавая новый ID.
0
|
|
|
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
|
||
| 04.07.2013, 23:48 [ТС] | ||
|
Да, вы правильно поняли....
0
|
||
|
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
|
|
| 04.07.2013, 23:51 | |
|
решением может быть:
- вытащить на клиента ВЕСЬ датасет, созданный ОДИН раз на сервере для всех a1 от забора и до обеда - на клиенте организовать цикл пробежки по принятому датасету и передаче данных в ПЛК
1
|
|
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
| 04.07.2013, 23:58 | |
|
ExecSQL, батенька не поможет. Тем более, что метод этот применяется ТОЛЬКО для модифицирующих запросов.
В частности, для обновления данных (UPDATE). Если постоянно менять параметр запроса для получения новых данных, то и хранимая процедура не поможет избежать упомянутых "тормозов". А получение данных из таблиц базы возможен только с применением метода Open. И не стоит здесь мудрить, потому как другого пути просто нет. То что вы там пытаетесь показать, что "нужно присваивать так и только так:" относиться к выходным параметрам хранимых процедур и, как выше сказано, ничем в увеличении скорости получения данных ХП не поможет. Оптимизация скорости выполнения может быть только в одном - получить селективным запросом (SELECT) по возможности как можно больше записей за один "Open" и с результатом запроса разбираться на клиенте (в программе).
1
|
|
|
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
|
|||
| 05.07.2013, 00:07 [ТС] | |||
|
Можно... Я думал об этом... Но надеялся обойтись без DBGrid... К примеру хранимой процедурой... Ну да ладно... Так значит так... Завтра буду пихать всё в DBGrid. Добавлено через 3 минуты Добавлено через 2 минуты Всем спасибо за помощь! Дальше справлюсь)))
0
|
|||
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
||
| 05.07.2013, 00:12 | ||
Нет, нет и еще 100 раз "нет". Когда компонент ADOQuery открывается и возвращает результат запроса - в нем как раз и сидят те данные, которые так нужны. Грид используют только для отображения полученного результата. Отсюда, как и сказано, надо будет пробежаться по ADOQuery (а не по DBGrid'у). Так что грид в этой ситуации не нужен.
0
|
||
|
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
|
||
| 05.07.2013, 00:26 | ||
Достаточно ОДИН раз получить весь датасет для всего спектра a1, а потом организовать цикл по датасету ( а не по DBGrid)
0
|
||
|
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
|
|||
| 05.07.2013, 09:18 [ТС] | |||
|
Добавлено через 16 минут
0
|
|||
| 05.07.2013, 09:18 | |
|
Помогаю со студенческими работами здесь
13
Dataset not in edit or insert mode (ADOQuery) ошибка ADOQuery:DATAset not in edit or insert mode Ошибка: 'FDQuery: Parameter 'edit.Text' not found' Как перевести Edit.Text из String в Number (SQL) Ошибка "AdoQuery dataset not in edit or insert mode" при незаполненных полях Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
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
На первой гифке отладочные линии отключены, а на второй включены:. . .
|