powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / dbf() возвращает "левое" значение
15 сообщений из 40, страница 2 из 2
dbf() возвращает "левое" значение
    #34061078
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТы сам запутался и всех запутал. Почему таблица обязательно в файле должна быть, курсоры в памяти хранятся чтобы диск не засорять. Ты же значения переменных на диске не ищешь?

Функция DBF() возвращает полное имя файла открытой DBF, используется для операций с файлами (например скопировать куда-то или запаковать)
Но в select`е так писать не надо, если таблица открыта, то он и без DBF("MyDBF") поймет, а если закрыта, то ошибку получишь, а так select ее сам откроет.короче, это просто ты не туда глянул, ты смотришь на строку
FROM DBF("kdf"), а не нада. тк у меня прежде идет
USE (sKDFFile) ALIAS kdf IN 0
Кроме того, у меня есть по прописанному фоксе пути файл kdf.dbf, но есть его архивные версии из которых будут браться данные(потому и USE (sKDFFile) ALIAS kdf IN 0). если же я дам FROM kdf - то буду там всегда видеть одни и те же данные...

вот такой пример не прокатит:
Код: plaintext
1.
2.
3.
SELECT * from stats INTO CURSOR curStats NOFILTER 
      SELECT stats
      REPLACE Report_ID WITH  1  FOR EMPTY(Report_ID)
      APPEND FROM curStats
получишь ашипку - нету такой талбицы

а такой - прокатит
Код: plaintext
1.
2.
3.
SELECT * from stats INTO CURSOR curStats NOFILTER 
      SELECT stats
      REPLACE Report_ID WITH  1  FOR EMPTY(Report_ID)
      APPEND FROM DBF("curStats")
Здеся, а это из действующей проги, яркий пример того, из-за чего я задал вопрос.

РЕБЯТА!!! ПОВТОРЯЮ ВОПРОС! В данном примере DBF("curStats") сработает, в примере в начале треда - нет!
ПОЧЕМУ НЕ РАБОТАЕТ DBF("curUsedPull")??? Кто знает?
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061095
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100пиши с указанием псевдонимов
ничего не понимаю, где и какие поля
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
   SELECT ;
       abonents.ab_name,;
       abonents.abonent,;
       kdf.abonent2 ,;
       kdf.talk_sec,;
       pull.comment;
     FROM kdf ;
     LEFT JOIN pull ON kdf.abonent2 = pull.phone;
     LEFT JOIN abonents ON VAL(kdf.abonent) = abonents.abonent;
     WHERE kdf.abonent2 in (select phone from pull) ;
     INTO CURSOR curUsedPull
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061140
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути выборки - она РАБОТАЕТ КАК НУЖНО и дает мне ПРАВИЛЬНЫЕ РЕЗУЛЬТАТЫ в ОЖИДАЕМОМ ВИДЕ!
Это я к тому, что не нужно сейчас браться за изменение/"исправление" самого запроса - он работает.
не работает функция dbf("curUsedPull") по отношению к курсору-результату этой выборки. А на практике я такое применял не раз и работало, не пойму одного - почему в данном случае не работает?
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061187
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стас, учи мат.часть

мне больше нечего сказать
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061211
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100вот это видишь
это все курсоры

работает???

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create cursor tt (t i, p i)

insert into tt (t,p) values ( 1 , 1 )
insert into tt (t,p) values ( 2 , 2 )

select * from tt into cursor tt1 where t= 1 
select * from tt into cursor tt2 where t= 2 

select * ;
    from tt1 ;
union ;
select * ;
    from tt2 ;
into cursor tt3

кстати - это работает именно из-за того, что на диске физически создается файл с именем tt. Поэтому, когда ты пишешь select * from tt into cursor tt1 where t=1 и дуаешь что во фразе from tt, tt - это алиас, то ты ошибаешься. tt - это имя файла. просто в твоем примере имя файла и алиас - одинаковые. ты его, курсор tt, под левым алиясом заюзай, например под curtt:
Код: plaintext
1.
use in tt
use tt in  0  alias curtt
и дай тогда:
Код: plaintext
1.
select * from curtt into cursor tt where t= 1 
select * from curtt into cursor tt where t= 2 
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061232
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какой файл?
какой алиаз?
какой юз?

какой юз курсора? ты о чем?

ну еще у меня ошибки поищи

да нет оно работает
паТОМУ ШТА tttttt называется

изобретаешь новую философию работы с фоксом
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061244
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, проехал в данном случае. не создается файл tt.
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061273
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я тебе еще раз пишу, как нужно

обрати внимание на стиль

и на иннер джоин

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  SELECT ;
       a.ab_name,;
       a.abonent,;
       k.abonent2 ,;
       k.talk_sec,;
       p.comment;
     FROM kdf k ;
     inner JOIN pull  p ON k.abonent2 = pull.phone;
     LEFT JOIN abonents  a ON VAL(k.abonent) = a.abonent;
     INTO CURSOR curUsedPull
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061293
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, все, допёр, наконец.
Действительно не нужне мне в данном случае dbf("curUsedPull") тк прекрасно работает
select * from curUsedPull into cursor curXXX

т.е. во фразу from МОЖНО ДАВАТЬ АЛИАС!!! (это я для себя пишу)
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061336
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   SELECT ;
       abonents.ab_name,;
       abonents.abonent,;
       kdf.abonent2 ,;
       kdf.talk_sec,;
       pull.comment;
     FROM DBF("kdf") ;
     inner JOIN pull ON kdf.abonent2 = pull.phone;
     LEFT JOIN abonents ON VAL(kdf.abonent) = abonents.abonent;
     WHERE abonent2 in (select phone from pull) ;
     INTO CURSOR curUsedPull2
работает как надо! из чего делаю вывод что я почти нихрена не знаю и еще и спорить лезу :( особенно касаемо SELECT SQL
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061355
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WHERE abonent2 in (select phone from pull)

вот это для чего??

это иннер джоин делаете


ну пипец полный
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061360
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, строку WHERE abonent2 in (select phone from pull) ;
я уже убрал... недоглядел...
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061369
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тебе имена курсоров
по приколу набирать?

руки не болят?

у лисы есть возможность использовать псевдонимы
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061371
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я потом такое делаю, т.е. это конечная цель, - может все в 1 запрос получицца?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   SELECT ;
       abonent,;
       ab_name,;
       abonent2,;
       sum (talk_sec) as talk_sec,;
       count (abonent) as times;
     FROM curUsedPull;
     INTO CURSOR curPullUse;
     GROUP BY;
       abonent,;
       ab_name,;
       abonent2
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061388
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100тебе имена курсоров
по приколу набирать?

руки не болят?

у лисы есть возможность использовать псевдонимыэто имена не курсоров, а dbf-ок, но по сути мне так легче потом самому разбирацца че к чему.
руки не болят, спасибо за беспокойство :)

а псеффдонимы это, не алиасы (ALIAS) случаем? если нет, то что?
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / dbf() возвращает "левое" значение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]