Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
ВнизQUERY-SQL Найти похожие ветки
← →
Alex8 (2007-06-28 12:30) [0]Уважаемые мастера!
Подскажите, пожалуйста,где я ошибаюсь.
Есть форма с такими компонентами:
DBGrid1 ( DataSource = DataSource1),
DataSource1 (DataSet = Query1),
Query1 ( DataBaseName = MyBD,
SQL="SELECT * FROM Table1",
Редактором полей включены все поля из Table1:
ikod, cName и т.д.),
Button1 (procedure buton1Click(Sender: TObject);
Var zapros:String;
begin
Zapros := "Select * From Table1";
Query1.Active := False;
Query1.SQL.Clear;
Query1.SQL.Add(zapros);
Query1.Active := True;
end;)
В этом варианте все работает.
Но стоит в Zapros заменить * на имя любого поля из Table1
(Например "Select cName From Table1"), то при выполнении
оператора Query1.Active := True; выдается ошибка
"Поле iKod не найдено ". iKod - первый в списке полей.
Не могу понять в чем дело. Спасибо
← →
Плохиш © (2007-06-28 12:32) [1]
> Не могу понять в чем дело. Спасибо
Дело вот в этом
> Редактором полей включены все поля из Table1:
> ikod, cName и т.д.),
← →
pavel_guzhanov © (2007-06-28 12:36) [2]
> Редактором полей включены все поля из Table1:
> ikod, cName и т.д.),
Редактором полей DBGrid? Если да, то все правильно, будет ошибка. Ты же указал, что в грид надо помещать значения всех полей, а запросом выдаешь значение только одного поля. Чтобы работало все корректно, не надо редактором полей ничего делать, очистить его надо. Тогда в гриде будут отображаться только поля, которые возвращает запрос.
← →
Alex8 (2007-06-28 14:18) [3]>Редактором полей DBGrid? Если да, то все правильно,
будет ошибка.
Речь идет о редакторе полей в Query
А пользуюсь я им, чтобы получить русские заголовки
граф в Гриде из DisplayLabel, т.к. AS в SELECT
не обрабатывает букву "ч" и требует заголовков из
одного слова. Kак обойти эту проблему.
Можно было бы пойти на * , чтобы сделать лишние
поля невидимыми, но в Table1 ecть вычисляемые поля.
← →
Anatoly Podgoretsky © (2007-06-28 14:55) [4]> Alex8 (28.06.2007 14:18:03) [3]
Никогда не используй * в запросе, разве только для тестовых целей.
← →
homm © (2007-06-28 14:56) [5]> Никогда не используй * в запросе, разве только для тестовых целей.
Меньше знаешь, крпче спишь? :)
← →
Alex8 (2007-06-28 15:03) [6]> Никогда не используй * в запросе, разве только для тестовых целей.
Так как решить проблему?
← →
Плохиш © (2007-06-28 15:18) [7]
> А пользуюсь я им, чтобы получить русские заголовки
> граф в Гриде из DisplayLabel, т.к. AS в SELECT
Это что ли проблема? Так и присвой заголовки столбцам в гриде, вся информация есть в справке...
← →
Johnmen © (2007-06-28 15:18) [8]Заведи массив соответствия настоящих имен полей и отображаемых.
После получения набора данных проходи по коллекции полей и подставляй DisplayLabel.
← →
Anatoly Podgoretsky © (2007-06-28 15:47) [9]> Alex8 (28.06.2007 15:03:06) [6]
Тебе уже ответили
← →
Alex8 (2007-06-29 08:26) [10]Все понял. Спасибо.
Только возник дополнительный вопрос.
Если редактор полей в Query д.б. пустым, то
где он может использоваться ?
← →
Johnmen © (2007-06-29 09:20) [11]Где угодно. Кроме как на полевых работах...
← →
ЮЮ © (2007-06-29 09:54) [12]Он должен быть пустым в случае изменяемого в RunTime текста запроса. Если он не миняется, то может быть заполнен и настроен и в Disign-е
← →
Alex8 (2007-06-29 12:02) [13]Понятно. Прошу прощения, но у меня еще 1 вопрос.
В Table1 есть вычисляемое поле Р1.
Если SELECT * FROM Table1 ,
то Р1 Нормально отображается в соответствующем DBGrid,
а при SELECT Р1 FROM Table1
выдается "Invalid field name P1 ".
Где-то портачу ?
← →
homm © (2007-06-29 12:16) [14]Может стоить по английски написать P1 ?
← →
Плохиш © (2007-06-29 12:22) [15]
> Может стоить по английски написать P1 ?
Или в запросе по-русски :-)
← →
Johnmen © (2007-06-29 12:23) [16]Вычисляемое поле в таблице... А что за СУБД?
← →
Alex8 (2007-06-29 12:41) [17]СУБД- PARADOX.
Имя поля написано Латынью.
Р1-это условно.
← →
Плохиш © (2007-06-29 12:53) [18]
> Р1-это условно.
Всё, счастливо оставаться...
← →
homm © (2007-06-29 13:32) [19]> Р1-это условно.
Крнкретный код давай, который не пашет.
← →
Alex8 (2007-06-29 13:59) [20]> Крнкретный код давай, который не пашет.
procedure TfrmAbr.btAbrClick(Sender: TObject);
Var zpr:String;
begin
// zpr := "Select * FROM Tiz"; Здесь все проходит
zpr := "Select Tiz.Mesto FROM Tiz"; // А здесь ошибка
Qabr.Active := False;
Qabr.SQL.Clear;
Qabr.SQL.Add(zpr);
Qabr.Active := True;
end;
← →
Плохиш © (2007-06-29 14:14) [21]
> Alex8 (29.06.07 13:59) [20]
А я АДО верю, что у тебя поля в таблице нет.
> Qabr.SQL.Clear;
> Qabr.SQL.Add(zpr);
Как баран, право слово, ему всю ветку твердят, как запросы присваивать надо, а он упёрся :-(
← →
Anatoly Podgoretsky © (2007-06-29 14:33) [22]> Плохиш (29.06.2007 14:14:21) [21]
Возможно и есть, но советы он слушать не хочет.
← →
Alex8 (2007-06-29 14:39) [23]> Как баран, право слово, ему всю ветку твердят....
Ну ругаться-то зачем. Лучше объяснил бы в чем дело
(если хочешь помочь).
Для сведения (на всякий случай): Полей в Qabr нет
← →
Anatoly Podgoretsky © (2007-06-29 14:49) [24]> Alex8 (29.06.2007 14:39:23) [23]
Уже объяснили, повторяться что ли?
← →
Alex8 (2007-06-29 15:10) [25]> Уже объяснили, повторяться что ли?
Ну не надо. Не переутомляйтесь.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.043 c