|
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 25
|
|||||||||||
Редактирование записи в БД (с процедурой изменения в SQL Server)10.12.2015, 00:53. Показов 7238. Ответов 6
Метки нет (Все метки)
Здравствуйте.Пытаюсь написать клиент-серверное приложение на Delphi + База данных (SQL Server). Раньше подобного не разрабатывала, параллельно изучаю и просматриваю свои старые разработки на Delphi с Access.
В программе будет справочник, который можно пополнять. Уже сделала удаление и добавление записей (с проверками на ввод), запросы хранятся в SQL Server, информация берется из одной таблицы. Использую также доп.библиотеку EhLib (т.к. разрабатывать начинала по учебнику). Помогите, пожалуйста, сделать кнопку Изменить. Удалось пока сделать: Запускаем справочник, отображаются данные (из таблицы БД в SQL Server): Код товара, наименование, ставка пошлины. Выбираю нужную позицию в таблице, нажимаю кнопку Изменить, появляется форма. На ней расположила EditEh (3шт.), в которых отображаются соответствующие значения выбранной строчки из таблицы. На этой же форме Есть кнопки Сохранить и Отмена. Здесь и возникла проблема.. 1.Кнопка Отмена. Здесь сначала просто прописала закрытие формы. Попробовала изменить значение, перешла на другую ячейку, потом нажала Отмену, но изменения сохранились. Не знаю как правильно нужно было решать проблему, сделала так:прописала все тоже закрытие формы редактирования, потом загрузила повторно таблицу(т.е. на экране появляется то, что было и до попытки что-то изменить). Вроде как работает, но, думаю, что это неверное решение проблемы. Что посоветуете?
Я же делаю клиент-серверное приложение, процедуры добавления и удаления создавала в SQL Server, может нужно тоже создавать там процедуру для изменения записей (UPDATE) или можно продолжать такой способ, который делаю сейчас? Если нужно делать через SQL Server, то хочу попросить помощи , т.к. пробовала изначально там и возникли проблемы. Очень надеюсь, что кто-нибудь поможет.
0
|
|||||||||||
| 10.12.2015, 00:53 | |
|
Ответы с готовыми решениями:
6
При сохранению записи с формы процедурой SQL Server, срабатывает триггер, но без показа сообщеня Запись данных в таблицу из текстбоксов формы процедурой MS SQL Server MS SQL Server Manager Объект изменения БД |
|
12 / 12 / 7
Регистрация: 09.12.2015
Сообщений: 191
|
|
| 10.12.2015, 01:01 | |
|
какие ошибки, почитайте Осипова, там все понятно написано
0
|
|
|
|
||
| 10.12.2015, 07:53 | ||
|
как узнать версию Delphi ? по хорошему, проблема у всех чаще всего одна - непонимание, какое волшебство связывает программу с SQL сервером а там - простые SQL команды хотите выбрать данные - пишете SELECT ... хотите изменить - UPDATE ... и т.д. некоторые компоненты типа xxxTable сами формируют эти команды, но самым примитивным и тупым способом - читать-писать все подряд. поэтому в реальной жизни не должны использоваться. вот select вы написали, а кто напишет update? все, повторюсь, очень зависит от используемых компонентов
0
|
||
|
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 25
|
||||||
| 10.12.2015, 19:36 [ТС] | ||||||
|
для krapotkin
1.Работаю в Delphi 7. Дополнительно устанавливала EhLib (в примере использовались компоненты этой доп. библиотеки: DBGridEh, DBEditEh и т.д.) и FastReport 4 (для создания экспорта отчета в excel и pdf). 2.Table нигде не использую. 3.Выше были коды для кнопок Отмена и Сохранить. Первый вопрос по Отмене(выше в теме описано подробнее): в форме для редактирования меняю данные. далее, если перехожу по ячейкам, то изменение фиксируется в таблице. Когда для кнопки Отмена был прописан код с закрытием формы редактирования, то форма закрывалась, но записи все также оставались измененными. Выше писала код, которым пыталась решить проблему (чтобы вышло так: жму отмену - форма закрывается, таблица без изменений). Код для Отмены + комментарии по компонентам
Так ли я решаю проблему или нужно по другому? Второй вопрос про кнопку Сохранить распишу потом,чтобы не путать.
0
|
||||||
|
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 25
|
|||||||||||
| 11.12.2015, 18:19 [ТС] | |||||||||||
|
Т.к. никто не отвечает, решила продолжить добивать кнопку Сохранить способом, который в другой теме использовали (через Modified и Post). В код выше добавила проверки (как в своей кнопке Добавить).
Возникла проблема с полем "ставка" на форме Редактирование записи. С кодом товара и наименованием все нормально, НО не получается изменить ставку на дробное число, если было целое (пока получилось менять с целого на целое, с дробного на целое). Как и для Edit в окне добавления ставила здесь на поле ограничение по вводу символов (
Хотела как и в Edit для добавления поставить маску ###.#, там получилось и ограничение сделать, и дробные числа вводить и проверку (ставка не должна быть больше 100.0), а здесь не получается. При вводе чисел выбивает ошибку is not a valid floating point value. В БД SQL Server для ставки товара стоит тип float. Код кнопки "Сохранить" изменения с добавленными проверками.
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 25
|
|
| 11.12.2015, 20:02 [ТС] | |
|
Поменяла в "региональных настройках винды ->настройка формата->разделитель целой и дробной части " запятую на точку, после этого удалось ввести в поле Ставка дробное число
![]() Осталось решить вопрос с ограничением знаков после запятой. Можно ли в SQL Server установить для float 1 знак после запятой (для decimal у меня получалось, есть ли такая возможность для float)?
0
|
|
|
|
|
| 11.12.2015, 20:27 | |
|
интересно, все остальные тоже должны будут поменять настройки системы для функционирования вашей программы?
вам нужно создать глобальную переменную fs:TFormatSettings; GetLocalFormatSettings(0,fs); fs.decimalSeparator:='.'; и далее везде самостоятельно конвертировать float в строки для SQL, используя нужный формат s:=FloatToStr(D, fs); или s:=format('update t1 set f1=%f where aaa=%d',[fltValue,intValue],fs); хоть ответа и не было, предположу, что используются разные там ADO приведенная простыня почти совсем не относится к заявленной теме. разделите все это на логические части обычно нужно 1. показать таблицу с данными, отражающими ваш текущий запрос. для этого пусть например будет DbGridEh подключенный 2. выбрать одну строку, показать детали в отдельной форме, в которой всякие Edit'ы ComboBox'ы и все такое 2.0. f:=CreateInputForm(); 2.1. процедура LoadUserInterfaceFromDB поля БД загружаются в контролы созданной формы f 2.2. процедура Validate определяем, все ли нормально введено. и если все ок и нажата кнопка ок то запускается 2.3. процедура SaveUserInputToDB вот тут я должен сформировать текстовую строку 'Update myTable set f1=xxx, f2=yyy......' и выполнить ее на сервере после чего вернуться в свой грид да еще обновить его, чтоб сохраненная информация появилась в вашей таблице
0
|
|
| 11.12.2015, 20:27 | |
|
Помогаю со студенческими работами здесь
7
Редактирование таблиц в БД MS SQL Server из Visual Studio Как использовать каскадные drop down list, которые после изменения записи запрещают редактирование? [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed- User: Reason: Not defined as a valid user of a trusted SQL Server connection Проблемы с редактирование Базы данных на SQL SERVER 2008 Заполнение и редактирование формы Microsoft Access из SQL Server Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|