![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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-я и почему. И еще чем отличается от других.