![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод в DBGrid только что созданного столбца в БД Access [D7]
Дмитрий А. © (2007-03-13 23:37:00)Вопрос следующий: подключаю таблицу Access к DBGrid средствами DataSourse и AdoQuery. Создаю при помощи ADOQuery.ExecSQL столбец в одной из таблиц Access, заполняю его данными, пишу такой запрос на вывод всех столбцов этой таблицы:
ADOQuery1.Active:=false;
ADOQuery1.SQL.Text:='Select * From Spisok';
ADOQuery1.Active:=true;
А он мне выводит только ключевое поле, а если запрашиваю только этот столбец отобразить , выдает первое и второе ключевое поле, но пустые строки в нем. А мне нужно отредактировать в DBGrid только что созданный столбец. Помогите, кто может, очень нужно!
Megabyte (2007-04-03 13:45:00) [1]Согласен %)
sniknik (2007-04-03 12:29:00) [2]> Всегда думал, что execsql надо делать только для запросов на модификацию
execsql (adoquery) это изврат от борланда, надо думать так - для модифицирующих команд компонент adocommand, для возвращающих данные adodataset... и все, и никаких путаниц с методами/логикой.
Megabyte (2007-04-03 12:04:00) [3]Всегда думал, что execsql надо делать только для запросов на модификацию, а для селектов достаточно просто открыть НД
sniknik (2007-04-03 11:52:00) [4]> adoquery1.sql.text:='SELECT * FROM DataBase';
> adoquery1.execsql;
> adoquery2.refresh;
опс... запрос оказывается другой... (смутил SELECT в первом квери, а рефреш значит делаем тому где ALTER? ну вот она и ошибка...)
sniknik (2007-04-03 11:49:00) [5]> Ребята, все намного проще!
все еще проще! вообще не нужны никакие извращения, и если у вас не работает то у вас ошибка в программе, надо ее искать, а не придумывать диких схем с обновлением только что открытого запроса.
npu3pak (2007-04-03 11:43:00) [6]Ребята, все намного проще!
Во-первых:
> adoquery1.open;
> adoquery1.sql.text:='SELECT * FROM DataBase';
> adoquery1.execsql;
> adoquery1.close;
Из этого реально нужно:
> adoquery1.sql.text:='SELECT * FROM DataBase';
> adoquery1.execsql;
Во-вторых:
На мой взгляд, самый простой способ обновить таблицу - это добавить еще пару adoquery2 и datasource2, связать их вместе. Затем после обновлений данных указать adoquery2.refresh и все!
Должно быть примерно так:
> adoquery1.sql.text:='SELECT * FROM DataBase';
> adoquery1.execsql;
> adoquery2.refresh;
Jan (2007-03-28 08:49:00) [7]
> adoquery1.open;
> adoquery1.sql.text:='SELECT * FROM DataBase';
> adoquery1.execsql;
> adoquery1.close;
execsql необязательно
> ADOQuery1.Clear; // Это на случай возникновения ошибок..
> .
чтобы их небыло надо
ADOQuery1.SQL.Text := 'SELECT * FROM DataBase';
npu3pak (2007-03-28 08:27:00) [8]Попробуй вот так:
adoquery1.open;
adoquery1.sql.text:='SELECT * FROM DataBase';
adoquery1.execsql;
adoquery1.close;
или
ADOQuery1.Active:=false;
ADOQuery1.Clear; // Это на случай возникновения ошибок...
ADOQuery1.SQL.Add('SELECT * FROM DataBase');
ADOQuery1.Active:=true;
Должно все работать!
Iris (2007-03-14 13:19:00) [9]Так что же, не найдется мастеров, подсказать, в чем же дело?
Iris (2007-03-14 13:19:00) [10]Так что же, не найдется мастеров, подсказать, в чем же дело?
Iris (2007-03-14 10:27:00) [11]У меня такая же проблема, но даже если делаю "Отсоединись после изменения структуры таблицы и присоединись" все равно выводит только ключевое поле
Дмитрий А. (2007-03-14 00:13:00) [12]> Текст запроса?
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(alter table Spisok add NewRow string(25));
ADOQuery1.ExecSQL;
> заполняю его данными
>Где и как?
тоже как и в выше запросе через ADOQuery1.ExecSQL - обновляю все пустые поля на "Введите данные"
> выдает первое и второе ключевое поле
> Сколько же у тебя ключевых полей? :)
Ключевое поле второе, а показывается второе и первое поля
> Отсоединись после изменения структуры таблицы и присоединись
> снова.
Просвети темного, каким образом это можно сделать, буду рад, если на примере покажешь.
Johnmen (2007-03-14 00:00:00) [13]
> Создаю при помощи ADOQuery.ExecSQL столбец в одной из таблиц Access
Текст запроса?
> заполняю его данными
Где и как?
> выдает первое и второе ключевое поле
Сколько же у тебя ключевых полей? :)
PS
Отсоединись после изменения структуры таблицы и присоединись снова.