Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.22;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.022 c
9-1156790642
Tar[OFF]
2006-08-28 22:44
2007.07.22
BIG DirectX SDK


2-1182814347
Gringoire
2007-06-26 03:32
2007.07.22
IP-адрес


2-1182894622
Vlad Oshin
2007-06-27 01:50
2007.07.22
Помогите "переинициализировать" сервис


2-1183046437
smaller
2007-06-28 20:00
2007.07.22
Как менять фокус ввода при открытии формы разными клавишами ?


15-1182025715
rumpelshtilchen
2007-06-17 00:28
2007.07.22
Язык