Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552

Редактирование записи в бд

06.07.2012, 10:52. Показов 3376. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем суть в том что есть две таблицы AUTO_LIST и NEW_TABLE
в NEW_TABLE необходимо записать в столбце FIELDNAME - gList.Columns[0].FieldName


пытаюсь записать так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TBDForm.gListColumnMoved(Sender: TObject; FromIndex,
  ToIndex: Integer);
begin
   ID := q.Fields[0].AsInteger;
   tW.StartTransaction;
   s.SQL.Clear;
 
   q.SQL.Add('SELECT * FROM NEW_TABLE');
 
   s.SQL.Text := Format('update NEW_TABLE set FIELDNAME = %s where ID=' ,[gList.Columns[0].FieldName, ID]);
   s.ExecQuery;
 
 
   tW.Commit;
 
 
end;

но получаю DYNAMIC SQL ERROR
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.07.2012, 10:52
Ответы с готовыми решениями:

Редактирование записи
Приветствую. Такая проблема. Нужно сделать редактирование записей в таблице. Запись редактируется, но только та, которая идет первая в...

Редактирование записи
Программа пишет ошибку "Не найдено поле в ADOQqery1 Id_FIO" Подскажите, пожалуйста, как исправить или переделать? Хотя вроде это поле -то у...

редактирование записи
Здравствуйте! Помогите пожалуйста. У меня есть форма на которой отображается записи таблицы. Мне нужно сделать редактирование записи, той...

33
 Аватар для HyperZen
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
06.07.2012, 11:36
Delphi
1
s.SQL.Clear
- делать необязательно, т.к. далее идет:
Delphi
1
s.SQL.Text := ...
Дальше:
Delphi
1
q.SQL.Add();
- добавляет строку в существующий запрос, если этот запрос весь, то где:
Delphi
1
q.SQL.Clear;
, что там было раньше?
А где?
Delphi
1
q.SQL.Open
0
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
06.07.2012, 11:37  [ТС]
Аналогичная ошибка.
Думаю что все дело в
Delphi
1
2
3
q.SQL.Add('SELECT * FROM NEW_TABLE');
 
   s.SQL.Text := Format('update NEW_TABLE set FIELDNAME = %s where ID=' ,[gList.Columns[0].FieldName, ID]);
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.07.2012, 11:38
Gleban38, покажите сам текст запрос
0
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
06.07.2012, 11:40  [ТС]
Цитата Сообщение от HyperZen Посмотреть сообщение
s.SQL.Text := 'update NEW_TABLE set FIELDNAME where ID = ' + IntToStr(ID);
А где здесь добавление значения FIELDNAME?

Добавлено через 34 секунды
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TBDForm.gListColumnMoved(Sender: TObject; FromIndex,
  ToIndex: Integer);
begin
   ID := q.Fields[0].AsInteger;
   tW.StartTransaction;
   s.SQL.Clear;
 
 
 
   s.SQL.Text := 'update NEW_TABLE set FIELDNAME where ID = ' + IntToStr(ID);
   s.ExecQuery;
   q.SQL.Add('SELECT * FROM NEW_TABLE');
   s.SQL.Clear;
   q.Open;
   //s.ExecQuery;
 
 
   tW.Commit;
 
 
end;
Больше ничего нет
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.07.2012, 11:41
Gleban38, вы не знаете, как в режиме дебага посмотреть значение переменной?
0
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
06.07.2012, 11:43  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
вы не знаете, как в режиме дебага посмотреть значение переменной?
а значение какой переменной надо узнать?
0
 Аватар для HyperZen
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
06.07.2012, 11:46
Цитата Сообщение от Gleban38 Посмотреть сообщение
А где здесь добавление значения FIELDNAME?
Пропустил. Пишу не в IDE. Должно быть что-то, вроде этого:

Delphi
1
2
3
4
5
6
7
8
9
10
procedure TBDForm.gListColumnMoved(Sender: TObject; FromIndex,
  ToIndex: Integer);
begin
   q.SQL.Text := 'SELECT * FROM NEW_TABLE';
   q.Open;
   ID := q.FieldValues['Имя_Поля'];  // тут должен стоять курсор, чтобы получить идентификатор этого поля сам переделай
 
   s.SQL.Text := 'update NEW_TABLE set FIELDNAME = ' + 'Откуда_берешь_это_значение' + ' where ID = ' + IntToStr(ID);
   s.ExecQuery;
end;
1
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.07.2012, 11:50
Gleban38, значение переменной, в которую записывается sql-запрос... вам надо проверить, чтобы строковые значения обрамлялись одинарной кавычкой...
0
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
06.07.2012, 12:05  [ТС]
запрос получается таким "update NEW_TABLE set FIELDNAME = MARKA where ID 1"

Добавлено через 15 секунд
Delphi
1
ShowMessage('update NEW_TABLE set FIELDNAME = ' + gList.Columns[ToIndex].FieldName + ' where ID = ' + IntToStr(ToIndex));
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.07.2012, 12:06
Gleban38, что-то мне подсказывает, что FieldName - строкое поле... или я не прав? если строковое, читай мой предыдущий пост, как решить эту проблему...
1
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
06.07.2012, 12:10  [ТС]
Сейчас он мне выдает q:Filed 'MARKA' not found.
MARKA - это gList.Columns[ToIndex].FieldName
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.07.2012, 12:17
ваш запрос должен выглядеть примерно так(пунктуация запроса сохранена):
SQL
1
UPDATE NEW_TABLE SET FIELDNAME = 'Марка' WHERE ID = 1

если заданной переменной, которая содержит sql-запрос, будет содержаться примерно такой код, запрос сработает...
0
 Аватар для HyperZen
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
06.07.2012, 12:35
Попробуй:
Delphi
1
QuoteStr(gList.Columns[ToIndex].FieldName)
1
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
06.07.2012, 13:03  [ТС]
Цитата Сообщение от HyperZen Посмотреть сообщение
QuoteStr(gList.Columns[ToIndex].FieldName)
извините а что с этим делать?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.07.2012, 13:35
Gleban38, а вы не пробовали в этом месте кода нажать на ф1 и почитать, что это за функция? и вообще, если уж так лень разбираться с конкатенацией и запросами, используйте параметризированный запрос, он все сделает за вас...
0
 Аватар для HyperZen
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
06.07.2012, 14:06
Вот пример запроса с параметром:
Delphi
1
2
3
4
5
6
7
8
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from MyTable where MyField = :MyValue');
    Parameters.ParamByName('MyValue').Value:='Тратата';
    Active:=True;
  end;
Добавлено через 42 секунды
Цитата Сообщение от Mr.Sandman Посмотреть сообщение
извините а что с этим делать?
Это функция, которая автоматически закрывает Вашу переменную в кавычки, которые так необходимы запросу...
1
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
06.07.2012, 14:07  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
 for i := 0 to 4 do begin
 
    s.SQL.Text := 'update NEW_TABLE set FIELDNAME = ' + gList.Columns[i].FieldName + ' where ID = ' + IntToStr(i);
    s.ExecQuery;
 
    s.SQL.Text := 'update NEW_TABLE set WIDTH = ' + IntToStr(gList.Columns[i].Width) + ' where ID = ' + IntToStr(i);
    s.ExecQuery;
 
    s.SQL.Text := 'update NEW_TABLE set CAPTION = ' + gList.Columns[i].Title.Caption + ' where ID = ' + IntToStr(i);
    s.ExecQuery;
 
  end;
пробую так занести, но таже ошибка

Добавлено через 34 секунды
Здесь нужна эта функция?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.07.2012, 14:10
Mr.Sandman, вам надо проставить одинарные кавычки в первом запросе, вам уже даже функцию подсказали, которая этим занимается
1
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
06.07.2012, 14:17  [ТС]
Он без цикла уже выдает ошибку
Delphi
1
2
q.SQL.Text := 'SELECT * FROM NEW_TABLE';
    q.Open;
Добавлено через 24 секунды
Да до цикла даже дело не доходит

Добавлено через 6 минут
[DCC Error] AUTO_LIST.pas(164): E2003 Undeclared identifier: 'QuoteStr'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.07.2012, 14:17
Помогаю со студенческими работами здесь

Редактирование записи
Помогите разобраться с ошибкой. Нажимаю на запись из таблицы, загружаются инпуты соответствующими значениями, но при нажатии на кнопку...

Редактирование записи
Использую тот же код, что и для добавления. только ADOQuery1.Edit; вместо Append. Текущая запись не изменяется. Просто создается новая. В...

Редактирование записи
Есть вот такой код на JScript-е: <% var db = Server.CreateObject("ADODB.Connection"); db.Mode = 3; // adModeReadWrite ...

Редактирование записи по ID
у меня вот тожеж проблема, я уже все мозги себе проел, мб подскажете что я не так делаю? надо редактировать запись в бд по ид, а у меня...

Редактирование записи в БД
Всем привет. Сразу скажу новичок. Для редактирования записи в бд, сделал метод public function SaveChangeTest($id){ ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru