Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2013, 21:58   #1
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию Делфи не видит выделенное поле

Доброго всем здоровечка. Непонятная проблема! В ДБГриде выделяю поле, чтобы указать какое именно поле мне нужно редактировать. Для проверки в Label1 на форме вывожу именно нужный мне id.
Пишу элементарный код:
Код:
  AdoQuery1.Close;
  SQL := 'UPDATE main SET status='+sComboBox1.Text+' WHERE id='+sDBGrid1.DataSource.DataSet.FieldByName('id').AsString;
  AdoQuery1.SQL.Text := SQL;
  AdoQuery1.ExecSQL;
Вот тут видно что поле существует. Но программа выдает ошибку мол Field Not Found 'id'



Голову уже проломил... Где моя ошибка?

Последний раз редактировалось iskurt; 23.09.2013 в 22:01.
iskurt вне форума Ответить с цитированием
Старый 23.09.2013, 22:14   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Таблица точно main называется?
Поле Status в таблице какой тип имеет?
Ошибка точно на ExecSQL?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.09.2013, 22:25   #3
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

На картинке специально показал название, и существование поля.
status char(15)
iskurt вне форума Ответить с цитированием
Старый 23.09.2013, 22:28   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
На картинке специально показал название, и существование поля.
На картинке нет ответа на все три вопроса. Хотя сейчас заметил название таблицы в заголовке. Первый вопрос отпал. А если Status символьное поле, то его значение нужно закавычить, типа Status='тра-ля-ля'
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.09.2013 в 22:31.
Аватар вне форума Ответить с цитированием
Старый 23.09.2013, 22:30   #5
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

Код:
 SQL := 'UPDATE main SET status="'+sComboBox1.Text
      +'" WHERE id="'+sDBGrid1.DataSource.DataSet.FieldByName('id').AsString+'"';
Вот переписал, и к моему удивлению ошибку выдает именно на этой строке. Может в этой строке где то нужно указать имя таблицы? ДатаСет или ДатаСоурс?
iskurt вне форума Ответить с цитированием
Старый 23.09.2013, 22:31   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

sDBGrid1 на момент вызова не привязан к этой таблице.
Поставь бряк и посмотри куда указывает его датасет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2013, 22:33   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так?
Код:
SQL := 'UPDATE main SET status='''+sComboBox1.Text+''' WHERE id='+sDBGrid1.DataSource.DataSet.FieldByName('id').AsString;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.09.2013, 22:38   #8
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

Мужики, не поверите... логика... смотрите, я сначала закрывал в ADOQuery1 - а значит куда ссылаться?

Вот новый код который работает... ЁКАРНЫЙ БАБАЙ!!!

Код:
var w : Integer;
begin
    w:= sDBGrid1.DataSource.DataSet.FieldByName('id').AsInteger;
    AdoQuery1.Close;
    ADOQuery1.SQL.Clear;
    SQL := 'UPDATE main SET status="'+sComboBox1.Text+'" WHERE id='+IntToStr(w);
    ADOQuery1.SQL.Text := SQL;
    ADOQuery1.ExecSQL;
Всем спасибо!!!
iskurt вне форума Ответить с цитированием
Старый 23.09.2013, 22:41   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Нужно разные датасеты использовать для корректировки и отображения
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.09.2013, 22:45   #10
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Нужно разные датасеты использовать для корректировки и отображения
Хорошая идея.... а то я блин извращаюсь с одними и теми же...
iskurt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спарсить то что видит снифер, но не видит браузер... FleXik Общие вопросы Delphi 8 11.12.2012 00:44
Поле с автоинкремент в БД. Делфи Artsiom Помощь студентам 2 08.10.2012 00:03
условие - выделенное не фигура Bape}l{ka Microsoft Office Excel 3 27.01.2012 13:07
HTML поле.. считать значения в Делфи MNaz Помощь студентам 2 15.08.2011 11:30
как из одной BDgrid скопировать выделенное поле в другую BDgrid Шурик БД в Delphi 7 03.05.2007 14:24