|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как узнать нахождится ли значение Edit между значениями столбца таблицы
Здравствуйте!
Подскажите ,пожалуйста, как так сделать! Я пробовала запросом, но там можно только вписать, что значение с таблицы равно значению Edit/ Есть таблица и в ней столбец значений. Мне нужно узнать между какими двумя значениями столбца находится значение Edit. в таблице 140 записей, если Edit>первого знаечения, но Edit<второго значения, тогда выбрать первое значение пишу так Код:
for i:=1 to 140 do if Table7.Locate('KodD', i, []) then if (edit6.Text>Table7.FieldByName('Dispt').Value) and (edit6.Text<Table7.FieldByName('Dispt').Value[i+1]) then edit8.Text:=Table7.FieldByName('DRAFT').Value else raise Exception.Create('Не найдена нужная запись'); но выбивает что запись не найдена! Последний раз редактировалось YuliyaKar, 20.11.2013 в 11:31. |
#2
|
||||
|
||||
Цитата:
почему же? можно использовать > = < <> <= >= Я за здоровый экстрим! Спасибо за "спасибо") |
#3
|
||||
|
||||
Можно так попробовать:
Код:
Q.SQL.Text := 'select (select max(KodD) from Table1 where KodD < :Value1) Min, (select min(KodD) from Table1 where KodD > :Value2) Max'; Q.Parameters.ParamValues['Value1'] := StrToInt(Edit1.Text); Q.Parameters.ParamValues['Value2'] := StrToInt(Edit1.Text); Q.Open; результат будет лежать в Q['Min'] и Q['Max'] Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 20.11.2013 в 15:13. |
#4
|
|||
|
|||
Странно, я тоже вроде знаю, что можно, но он мне пишет, что неправильный оператор!
|
#5
|
||||
|
||||
Цитата:
Т.е. Access'у нужно указывать фиктивную непустую таблицу в этом запросе: Код:
Q.SQL.Text := 'select (select max(KodD) from Table1 where KodD < :Value1) Min, (select min(KodD) from Table1 where KodD > :Value2) Max'; Например из той же самой таблицы вот так: Код:
Q.SQL.Text := 'select TOP 1 (select max(KodD) from Table1 where KodD < :Value1) Min, (select min(KodD) from Table1 where KodD > :Value2) Max FROM Table1'; |
#6
|
||||
|
||||
а как делаешь?
Я за здоровый экстрим! Спасибо за "спасибо") |
#7
|
|||
|
|||
Пишу так:
Код:
Query3.Active:=false; query3.SQL.Clear; query3.SQl.Text:='select *FROM Stab.DB where Dispt <= ''' + Edit6.Text + ''''; query3.ExecSQL; Edit8.Text:=Query3.Fields[1].AsString; |
#8
|
||||
|
||||
Цитата:
|
#9
|
||||
|
||||
Poli-smen опередил))
и от строки query3.SQL.Clear; нет толку Я за здоровый экстрим! Спасибо за "спасибо") |
#10
|
|||
|
|||
Ладно, пусть так! Но все равно он находит первое наимешьшое значение, которое наименьшое и все - дальше не ищет! Хотя я написала его в событие OnChange другого Edit.
И еще мне надо точно определить,что значение Edit находится между двумя значениями столбца таблицы. А по запросу он выводит только первое попавшееся! Ну сейчас буду пробовать |
#11
|
||||
|
||||
Цитата:
Попробуй такой запрос: Код:
query3.SQl.Text:='select *FROM Stab.DB where Dispt <= ''' + Edit6.Text + ''' ORDER BY Dispt DESC'; |
#12
|
|||
|
|||
Я тоже так подумала, что по логике, он находит, все что меньше, но выводит только первое.
Попробую так |
#13
|
||||
|
||||
Цитата:
Код:
Edit8.Text:=Query3.Fields[1].AsString; |
#14
|
|||
|
|||
Так они мне вес не нужны! Мне нужно только одно, которое стоит между двумя, которые имеют приближенные значения к значению Edit и взять наименьшое из них двух! ТО еcть определить в какой диапазон попадает значение Edit!
|
#15
|
||||
|
||||
Код:
query3.SQl.Text:='select *FROM Stab.DB where Dispt <= ''' + Edit6.Text + ''' ORDER BY Dispt DESC'; Код:
Q.SQL.Text := 'select max(KodD) as Min from Table1 where KodD < :Value'; Q.Parameters.ParamValues['Value'] := StrToInt(Edit1.Text); Q.Open; Min := Q['Min']; Q.SQL.Text := 'select min(KodD) as Max from Table1 where KodD > :Value'; Q.Parameters.ParamValues['Value'] := StrToInt(Edit1.Text); Q.Open; Max := Q['Max']; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |