Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Hirurg
Зарегистрирован: 25.05.2010 Сообщения: 14 Откуда: Астрахань
|
Добавлено: Ср Сен 07, 2011 11:31 am Заголовок сообщения: Как узнать выбраны ли записи в таблице. |
|
|
Здравствуйте...
Есть такое вырожение...
TABOBJ1=TABNAME+".Obj"
Select * From TABNAME, Untitled
Where TABOBJ1 Intersects Untitled.Obj And Untitled.Au=""+NAMESC+"" Into Selection
И иногда объектов на пересечении слоев нет.
Так вот, как это узнать?
Спасибо |
|
Вернуться к началу |
|
|
Hirurg
Зарегистрирован: 25.05.2010 Сообщения: 14 Откуда: Астрахань
|
Добавлено: Ср Сен 07, 2011 12:17 pm Заголовок сообщения: |
|
|
Ой до самого доперло)))
if TABOBJ1 Intersects Untitled.Obj And Untitled.Au=""+NAMESC+"" = TRUE Then goto aaa
Else goto eee
End if |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Сб Сен 10, 2011 9:22 pm Заголовок сообщения: |
|
|
а может правильнее проверить количество записей в результирующей таблице? |
|
Вернуться к началу |
|
|
SergS
Зарегистрирован: 01.11.2010 Сообщения: 51
|
Добавлено: Пн Сен 12, 2011 5:15 am Заголовок сообщения: |
|
|
Hirurg писал(а): |
Ой до самого доперло)))
if TABOBJ1 Intersects Untitled.Obj And Untitled.Au=""+NAMESC+"" = TRUE Then goto aaa
Else goto eee
End if |
этаким образом Вы определите пересекаются ли объекты ТЕКУЩИХ записей в таблицах TABOBJ1 и Untitled (ну и равно ли поле Au текущей записи таблицы Untitled этому самому NAMESC). но не получите никакой информации об остальных записях (объектах) таблиц.
Еще сомнение вызывает фрагмент записи
Untitled.Au=""+NAMESC+"" = TRUE
и с кавычками что то не так - количество их какое-то не такое(на фих они вообще здесь нужны?) и проверка на TRUE предыдущего сравнения.....
правильно у FedorinoFF-а :
после запроса
Hirurg писал(а): |
Select * From TABNAME, Untitled
Where TABOBJ1 Intersects Untitled.Obj And Untitled.Au=""+NAMESC+"" Into Selection
|
спросить
if tableinfo(selection, TAB_INFO_NROWS) = 0 Then
'нет пересекающихся объектов - делаем так-то
.....
else
'есть - пересекающиеся объекты - делаем как то по другому
....
end if
ну и с кавычками все таки разберитесь - не будет такая запись работать |
|
Вернуться к началу |
|
|
Hirurg
Зарегистрирован: 25.05.2010 Сообщения: 14 Откуда: Астрахань
|
Добавлено: Вт Сен 20, 2011 1:46 pm Заголовок сообщения: |
|
|
Я это все уже побывал...
И в моем случае это не работает...
Работает только вот этот код который я написал выше...
И когда я пытался проверить количество записей в пустой таблице, программа мене выдавала ошибку "К таблице Selection нельзя обращаться как к таблице..." и хоть ты тресни...
На счет вот этого And Untitled.Au=""+NAMESC+"" Into Selection....
Ну просто зацепил лишнего из своей проги...Немножко не по теме...
Но надо заметить у меня это выражение работает... |
|
Вернуться к началу |
|
|
SergS
Зарегистрирован: 01.11.2010 Сообщения: 51
|
Добавлено: Пн Сен 26, 2011 7:14 am Заголовок сообщения: |
|
|
Hirurg писал(а): |
И когда я пытался проверить количество записей в пустой таблице, программа мене выдавала ошибку "К таблице Selection нельзя обращаться как к таблице..." и хоть ты тресни...
|
а..., ну таблица selection - очень странная таблица...
можно сделать вместо "Into Selection" выражение "Into Таблица", ну или вместо таблица еще какое-либо имя. А уже потом использовать
tableinfo(Таблица, TAB_INFO_NROWS)
или еще можно так (уже с Selection):
dim st as string
.....
здесь запрос
.....
st = Selectioninfo(SEL_INFO_SELNAME)
и количество записей в выборке:
tableinfo(st, TAB_INFO_NROWS)
и совсем простое ( в случае использования именно таблицы Selection)
выражение Selectioninfo(SEL_INFO_NROWS) вернет количество записей в таблице Selection без дополнительных манипуляций.
Личный опыт:
стараюсь строить программу так, чтобы при ее выполнении не нарушалось текущее состояние среды (если этого не требует логика и цель выполнения программы). В частности, стараюсь программно не изменять текущую выборку (Selection). Для этого просто в Select-ах явно указываю имя результирующей таблицы и пользуюсь предложением Noselect. Причина - никогда не знаешь, сколько Selchangedhandler-ов в данный момент работают, и что именно они делают.
Кстати, выражение
""+NAMESC+""
абсолютно едентично выражению
NAMESC
потому как, если к строке добавить пустую строку (и даже две, с двух сторон), то она не изменится. |
|
Вернуться к началу |
|
|
|