Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL и TTable [D7, Paradox]


vodvorezlaya ©   (2006-09-25 08:31:00) 

Всем доброго времени суток.

Как в SQL(TQuery) обратиться к полю которое является текущим в компоненте TTable?

Т.е. курсор TTable находится например на 100-й записи,
необходимо чтоб эти данные(с 100-й записи) участвовали в запросе к другой таблице только на SQL?

Спасибо.


Desdechado   (2006-09-25 17:52:00) [1]

SQL не работает с наборами данных на клиенте, SQL работает с данными на сервере
Если тебе нужно в Query вытащить что-то, основываясь на данных из другого набора, просто пишешь
Query.SQL.Text := 'SELECT * FROM xxx WHERE fld=:param';
Query.ParamByName('param').AsString := Table1.FieldByName( 'yyy' ).AsString;
Query.Open;

при желании это можно втолкать в Table1.AfterScroll
получится эдакий вариант мастер-детали


vodvorezlaya   (2006-09-25 12:31:00) [2]

А всётаки не работает.

1-я таблица

NomerPlavki, в ней поля nachalo и konec - задают диапазон.

Вторая LHF_Energonositeli, в ней поле DateTime, которое нужно вывести.


vodvorezlaya   (2006-09-25 12:14:00) [3]

Всем спасибо, задача решена.


ЮЮ   (2006-09-25 12:10:00) [4]


> Как здесь вписать две таблици?

Не нужны здесь две таблицы, а лишь та из клторой ты выбираешь

Как называются поля, задающие период, в первой таблице? Так назови и параметры. Я же не знаю структуры твоих таблиц. Ты же привести их не удосуживаешься


vodvorezlaya   (2006-09-25 11:48:00) [5]


> 'SELECT * FROM <имя таблицы в БД.Извени, я не знаю.Это твои
> таблицы> WHERE DateField BETWEEN :FirstDate AND :LastDate'

Как здесь вписать две таблици?

DateField он понимает, а FirstDate и LastDate не хочет.


ЮЮ   (2006-09-25 10:18:00) [6]


> Это-то и нужно. Огромное спасибо.


Блин. Ничего нового, чего не сказал в [2] в [12] вроде не появилось :)


vodvorezlaya   (2006-09-25 10:15:00) [7]


> ЮЮ ©   (25.09.06 10:11) [12]

Это-то и нужно. Огромное спасибо.


ЮЮ   (2006-09-25 10:11:00) [8]


> SQL.Add(select * from ???)


??? - это вопрос к Нам?

Уже даже сам(а) цитировал(а):
TQuery.SQL.Text :=
'SELECT * FROM <имя таблицы в БД.Извени, я не знаю.Это твои таблицы>WHERE DateField BETWEEN :FirstDate AND :LastDate'

DataSource это свойство компонента TQuery, брошенное тобой на форму. Текст запроса можно написать там же.


vodvorezlaya   (2006-09-25 09:59:00) [9]

SQL.Add(select * from ???)


ЮЮ   (2006-09-25 09:56:00) [10]


> а в качестве
> > TQuery. DataSourceуказать TDataSource, ссылающийся на
>  TTable


vodvorezlaya   (2006-09-25 09:53:00) [11]


> И теперь перемещаясь TTable запрос должен пероткрываться
> и показывать другую выборку. Положи два грида - для TTable
> и TQuery - и "поползай по первому"

Так и есть, но как передать данные с помощью SQL с текущего 1-го грида?


ЮЮ   (2006-09-25 09:45:00) [12]

>Так и сделал.

И теперь перемещаясь TTable запрос должен пероткрываться и показывать другую выборку. Положи два грида - для TTable и TQuery - и "поползай по первому"


vodvorezlaya   (2006-09-25 09:31:00) [13]

Можно ли чисто на SQL обратиться к текущей записи TTable (без переменных).Как?

> TQuery.SQL.Text :=
>  'SELECT * FROM Table WHERE DateField BETWEEN :FirstDate
> AND :LastDate'

Это я понимаю. Но как без переменных прямо на SQL выдрать текущее значение FirstDate и LastDate из другой таблицы.

> параметры SQL должны именоваться как поля TTable, а в качестве
> TQuery.DataSource указать TDataSource, ссылающийся на  TTable

Так и сделал.


ЮЮ   (2006-09-25 09:18:00) [14]

и не бойся злой, что во дворе. Сходи в ближайший книжный, если закачать учебник неохота :)


Sergey13   (2006-09-25 09:16:00) [15]

> [3] vodvorezlaya   (25.09.06 09:02)

Диапазон чего либо в запросе задается либо сочетанием условий
>начала AND <конца
либо оператором
between начало AND конец


ЮЮ   (2006-09-25 09:14:00) [16]


> диапазоне указаном в 100-й записи 1-й таблицы.


И что, пользователь должен cкроллить грид дj 100-й записи, чтобы задать нужный диапазон? Ему проще ручками будет ввести две даты ?

TQuery.SQL.Text :=
 'SELECT * FROM Table WHERE DateField BETWEEN :FirstDate AND :LastDate'

теперь, перед открытием, следует определить параметры запроса.
Можно "ручками" (заполняяя TQuery.Params), а можно "автоматом", используя TQuery.DataSource (см. [2]);


vodvorezlaya   (2006-09-25 09:02:00) [17]


> Осталось определить, с какого конца эта запись 100-я и почему.
>  И еще чем отличается от других.

С начала.

В этой записи 1-й табл. содержится начальная и конечная даты(диапазон), а во 2-й таблице первый столбик содержит дату, необходимо чтоб результатом запроса(на СКУЛЬ) были данные со второй таблици в диапазоне указаном в 100-й записи 1-й таблицы.

Спасибо.


ЮЮ   (2006-09-25 08:40:00) [18]

параметры SQL должны именоваться как поля TTable, а в качестве TQuery.DataSource указать TDataSource, ссылающийся на  TTable


Sergey13   (2006-09-25 08:38:00) [19]

Осталось определить, с какого конца эта запись 100-я и почему. И еще чем отличается от других.


Наверх

Титульная страница Поиск, карта сайта Написать письмо