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

Как обновить текущую запись в ADOQuery?

17.12.2018, 16:31. Показов 6360. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
// заносим информацию в задачу, что она уже рассматривалась
        temp_num_pos:=Connecting_to_DataBase.DataModule1.Table0_of_task.FieldByName('Number_of_task').AsInteger;
        with Connecting_to_DataBase.DataModule1.Table0_of_task do
           begin
             //edit;
             Close;
             SQL.Clear;
             SQL.Text:='Update [Physical_tasks] Set [Used]=1';
             SQL.Add('WHERE [Number_of_task] = temp_num_pos');
             ExecSQL;
             //Open;
           end;
Прога обновляет все записи,а не текущую. Если кто знает, то просьба, пожалуйста, помочь.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2018, 16:31
Ответы с готовыми решениями:

Как обновить текущую запись при заданном(!) фильтре в ADOQuery?
Здравствуйте Всем! Всем спасибо за прошлую тему,но я немного неверно сформулировал вопрос: "Как все-таки обновить текущую запись...

Как удалить текущую запись
открываю форму добавления новой записи DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.GoToRecord , , acNewRec но...

Обновить текущую дату
при попытке обновить строку string str = "UPDATE teh SET firma='" + nf.s + "' ,nafirmu='"+DateTime.Today+"' WHERE inv='" +...

14
5979 / 4554 / 1095
Регистрация: 29.08.2013
Сообщений: 28,181
Записей в блоге: 3
17.12.2018, 18:24
Лучший ответ Сообщение было отмечено Alexey-PK как решение

Решение

Delphi
1
2
SQL.Text:='Update [Physical_tasks] Set [Used]=1';
SQL.Add('WHERE [Number_of_task] ='+ IntToStr(temp_num_pos) );
рекомендую перед запросом делать
Delphi
1
Showmessage(Query.sql.Text)
и смотреть итоговый запрос
1
15 / 15 / 0
Регистрация: 22.06.2018
Сообщений: 199
17.12.2018, 22:59  [ТС]
Да, согласен с Вами, а для того, чтобы узнать текущую запись надо:

Delphi
1
temp_num_pos:=Connecting_to_DataBase.DataModule1.DataSource1.DataSet.RecNo;
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
18.12.2018, 12:45
вот же сборник вредных советов
запись должна идентифицироваться уникальным ключом, а не номером в датасете
а если записей больше или меньше станет к моменту запроса?? а сортировка поменяется?
есть метод Locate пользуйтесь
0
15 / 15 / 0
Регистрация: 22.06.2018
Сообщений: 199
22.12.2018, 00:59  [ТС]
Согласен с Вами, а не подскажите с какого перепугу вдруг SQL назначает записи не 1 или 2, а 1001, и 2001, хотя в свойствах стоит , как положено,начиная с 1 и т.д.? Что можете сказать по этому поводу? А так да, Id святое, но объясните, пожалуйста, как это происходит или виноват ДеД Моез?)))
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
22.12.2018, 07:39
Цитата Сообщение от Alexey-PK Посмотреть сообщение
с какого перепугу вдруг SQL назначает записи не 1 или 2, а 1001, и 2001, хотя в свойствах стоит , как положено,начиная с 1 и т.д.?
Интересно, что за свойства такие и где (буквы "SQL" обозначают только язык программирования и в этом контексте ни о чём не говорят)? Если речь о компонентах Дельфи, то вряд ли кто припомнит таковые свойства.

А сервер SQL, который разбирает запрос и поставляет данные в клиентскую программу, не нумерует записи ни при каких обстоятельствах - нет у него ни таких свойств, ни такой задачи.
Если какие-то дельфийские компоненты и нумеруют полученный от сервера SQL набор данных, то это их личное дело.

Но надеяться, что используемый в проекте датасет будет нумеровать записи - себе дороже (именно это krapotkin и пытался показать).
Т.е. надо всё же чётко различать: SQL сервер (его работу) и компоненты в проекте, которые хранят полученный от сервера набор данных. У каждого свои обязанности.
1
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
22.12.2018, 16:28
попробую доступными словами...
сделали мы запрос
SQL
1
2
3
4
SELECT LAST_NAME 
FROM CLIENTS 
WHERE BIRTH_DATE BETWEEN '01.01.1990' AND '01.02.1990'
ORDER BY LAST_NAME
получили
Иванов
Петров
Сидоров
в вашей терминологии
1. Иванов
2. Петров
3. Сидоров
в это время ваш коллега на соседней кассе добавил в БД Кузнецова!
вы переоткрываете ЭТОТ же запрос
и получаете
1. Иванов
2. Кузнецов
3. Петров
4. Сидоров

Опа, нежданчик. Петров был RECNO=2, стал RECNO=3
достигнете вы желаемого результата ???
1
15 / 15 / 0
Регистрация: 22.06.2018
Сообщений: 199
22.12.2018, 23:18  [ТС]
Ок,я полностью с Вами согласен и тут Вы правы, но дело в том, что базу данных я наполняю сам и мне не важен порядок следования элементов по ID, а важно поле самой задачи и к какой теме она относиться. Поэтому я не могу знать какие задачи и в какой последовательности буду заполнять, так как сама база данных будет заполняться последовательно. Поэтому мне и пришлось так сделать, чтобы потом фильтровать задачи по темам.
А так Вы правы.
0
15 / 15 / 0
Регистрация: 22.06.2018
Сообщений: 199
22.12.2018, 23:34  [ТС]
Вы знаете я тоже не знаю, почему и с чего вдруг MS SQL 2012 решил "рисовать" такие ID. Это нереально и никто не знает. кроме Билла Гейтса. Но я не думаю, что кто-то из компонент нумерует ( такого нигде нет и не было, полагаю). Просто , как говорят в народе:"технический сбой", но а так см. в файле.
Изображения
 
0
5979 / 4554 / 1095
Регистрация: 29.08.2013
Сообщений: 28,181
Записей в блоге: 3
23.12.2018, 17:53
Цитата Сообщение от Alexey-PK Посмотреть сообщение
Это нереально и никто не знает
вы двоечник, хватит на гейтса валить если вам лень прочитать про выбранную БД
0
35 / 29 / 15
Регистрация: 20.11.2010
Сообщений: 481
24.12.2018, 07:11
Вам необходимо (критически) при создании каждой таблицы создавать такое поле как
SQL
1
UNICUM_NUM INT IDENTITY(1,1) PRIMARY KEY NOT NULL
Уточню, что в это поле вы вводить какие то данные не сможете и не должны. По мере добавления записей в талицу это поле будет инкрементироваться (+1). Соответственно у каждой вашей записи будет уникальный номер.
Скажем вы получили таблицу в DataSet (UNICUM_NUM, Name, Family).
Имеется запись: 10 Иван ПетровПосредством вашего RECNO эта запись быть может вообще 3.
Теперь вы хотите поменять фамилию у Ивана.
Delphi
1
2
3
Qry.Sql.Text := 'UPDATE Table ';
Qry.Sql.Add('SET Family = Свиридов');
Qry.Sql.Add('WHERE UNICUM_NUM = ' + DataSet.FieldByName('UNICUM_NUM').AsString);
.
Вот это и пытаются вам объяснить
1
15 / 15 / 0
Регистрация: 22.06.2018
Сообщений: 199
29.12.2018, 01:06  [ТС]
Ок, согласен с Вами,а как сделать это чисто без DataSet, только на основании ADO Query?
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
29.12.2018, 07:20
Цитата Сообщение от Alexey-PK Посмотреть сообщение
как сделать это чисто без DataSet, только на основании ADO Query?
Для справки: ADOQuery - это и есть DataSet.
1
15 / 15 / 0
Регистрация: 22.06.2018
Сообщений: 199
30.12.2018, 00:48  [ТС]
Ок, спасибо, т.е дубликат одного и того же. Хорошо, но в фильтрованном запросе этот просто не работает.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
31.12.2018, 13:52
конечно работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.12.2018, 13:52
Помогаю со студенческими работами здесь

Как открыть текущую запись в другой форме
Здравствуйте. Скажите как сделать, чтобы при нажатии кнопки перейти на текущую запись только в другой форме. Пробовала макросом НаЗапись,...

Как вывести в отчет текущую запись из DBGrid?
Как вывести в отчет текущую запись из DBGrid? БД Access.

Как удалить текущую запись в ленточной форме?
еще раз здравствуйте, подскажите пожалуйста какую процедуру VBA применить для того чтобы удалить текущую запись в ленточной форме? ...

Как добавить текущую запись из DbGrid в StringGrid?
Как добавить текущую запись из бд access которая отображается в DBgrid при клике мыши по ней или при нажатии на кнопку , в компонент...

Обновить данные в Запросе ADOQuery
procedure din_Refresh_Query(var Aq: TADOQuery); var n,i:integer; begin n:=Aq.RecNo; Aq.Active:=false; Aq.Active:=true; ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru