powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / dbf() возвращает "левое" значение
40 сообщений из 40, показаны все 2 страниц
dbf() возвращает "левое" значение
    #34060679
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет всем!
сделал такую виборку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
   SELECT ;
       abonents.ab_name,;
       abonents.abonent,;
       abonent2 ,;
       kdf.talk_sec,;
       pull.comment;
     FROM DBF("kdf") ;
     LEFT JOIN pull ON abonent2 = pull.phone;
     LEFT JOIN abonents ON VAL(kdf.abonent) = abonents.abonent;
     WHERE abonent2 in (select phone from pull) ;
     INTO CURSOR curUsedPull
после выполнения запроса заглядываю в него - в нем все как просил, даю
?DBF("curUsedPull")
возвращает имя файла с полным путем, как положено, тока там, по указанному пути, нету этого файла :( Даже ТС давал искать указанный в ответе DBF() файл - нету такого на винте!
соотв. не могу сделать выборку из полученного курсора curUsedPull.

Че за прикол - мож кто знает?

вфп80

ЗЫ
например оно дало мне
C:\DOCUME~1\СТАС\LOCALS~1\TEMP\BEIW000K.TMP
но там лежат тока таких вот 3 файла с похожим именем:
beiw0007.tmp
beiw0009.tmp
beiw000d.tmp
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060790
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KOсоотв. не могу сделать выборку из полученного курсора curUsedPull.

А ты пробовал?
select * from curUsedPull и всё получится.
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060796
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал добавлять в выборку опции NOFILTER или READWRITE - ниче не дает :(
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060801
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю фокс зарезервировал имя файла C:\DOCUME~1\СТАС\LOCALS~1\TEMP\BEIW000K.TMP на случай если твой курсор куда-то свопить надо будет.

вместо DBF() в данном случае надо использовать ALIAS()
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060806
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если тебе в файл это все надо, то select ... INTO DBF curUsedPull
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060809
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, так не пробовал, по памяти знаю что так не проходит - надо именно реальное имя давать...

ну попробовал - получил ошибку
Clause is missing or invalid

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

А ты пробовал?
select * from curUsedPull и всё получится.
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060865
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ так понимаю фокс зарезервировал имя файла C:\DOCUME~1\СТАС\LOCALS~1\TEMP\BEIW000K.TMP на случай если твой курсор куда-то свопить надо будет.
вместо DBF() в данном случае надо использовать ALIAS()Вы это к чему? Зачем мне альяс из альяса? мне нуда реальное имя физического файла полученного курсора

Dima TА если тебе в файл это все надо, то select ... INTO DBF curUsedPullтакое наверняка пройдет - но это мне неинтересно, т.е. это альтернативный вариант, а я уже свой состряпал, но на вопрос-то мой это не отвечает.

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

вначале ты его в курсор
а затем ....

уж определись чего тебе нужно
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060889
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне нужно эта...
я хотел потом...
...из полученного курсора сделать еще одну выборку...
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060894
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
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060896
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стасик, дорогой, не морочь себе и людям голову
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060920
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KO Dima TЯ так понимаю фокс зарезервировал имя файла C:\DOCUME~1\СТАС\LOCALS~1\TEMP\BEIW000K.TMP на случай если твой курсор куда-то свопить надо будет.
вместо DBF() в данном случае надо использовать ALIAS()Вы это к чему? Зачем мне альяс из альяса? мне нуда реальное имя физического файла полученного курсора

Dima TА если тебе в файл это все надо, то select ... INTO DBF curUsedPullтакое наверняка пройдет - но это мне неинтересно, т.е. это альтернативный вариант, а я уже свой состряпал, но на вопрос-то мой это не отвечает.

Раньше такая тема, с dbf(), у меня проходила, почему-то сейчас - нет...

Курсор он для того и курсор, чтобы на диск не сохранять результаты промежуточных запросов.

Так писать не надо:
SELECT ... FROM DBF("kdf") ...

пишешь
SELECT ... FROM kdf ...
если таблица уже открыта, то фокс из нее точно выборку сделает

Если ты писал
select * from DBF("curUsedPull")
то так точно не сработает
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060922
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ишшо издеваецца...
при чем тут работа с курсорами-то? у меня в базах нужные данные - мне что, предварительно их в курсоры копировать, шобы из тех курсоров потом выборку делать? и как это повлияет на результат фукции dbf()?
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060946
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какие базы, какие курсоры???

что тебе сделать нужно???

ты что писал??
читай
авторсоотв. не могу сделать выборку из полученного курсора curUsedPull.

напиши по-русски что нужно сделать

- выбрать в курсор
- что с выборкой сделать (запихнуть в БД?)
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060947
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Если ты писал
select * from DBF("curUsedPull")
то так точно не сработает
в том-то и дело что у меня в ряде других подобных случаев тема select * from DBF("curUsedPull") прекрасно проходит.
то что не нада делать
SELECT ... FROM DBF("kdf") ...
я и сам прекрасно знаю. и то что в FROM нужно не алиас давать, а рельное имя файла - тоже. и собсенно в этом и проблема тк DBF("curUsedPull") не отдает мне имя файла. Ведь curUsedPull это не файл, это алиас.
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060953
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
WHERE abonent2 in (select phone from pull) 

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

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

кто тебе эту чушь сказал
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060979
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
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060982
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100
Код: plaintext
WHERE abonent2 in (select phone from pull) 

во это пишется в иннер джоиннеа. не пишецца. ибо я получу не то, что мне нада
Иначе напиши мне полностью мою выборку с иннером вместо ин - я проверю
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34060995
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стас, ты чудишь
и не по-мелкому
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061009
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
это - работает, а с курсором-результатом-выборки = фигушки. Я уже однажды на это напоролся и точно знаю.
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061015
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KO Dima T
Если ты писал
select * from DBF("curUsedPull")
то так точно не сработает
в том-то и дело что у меня в ряде других подобных случаев тема select * from DBF("curUsedPull") прекрасно проходит.
то что не нада делать
SELECT ... FROM DBF("kdf") ...
я и сам прекрасно знаю. и то что в FROM нужно не алиас давать, а рельное имя файла - тоже. и собсенно в этом и проблема тк DBF("curUsedPull") не отдает мне имя файла. Ведь curUsedPull это не файл, это алиас.

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

Функция DBF() возвращает полное имя файла открытой DBF, используется для операций с файлами (например скопировать куда-то или запаковать)
Но в select`е так писать не надо, если таблица открыта, то он и без DBF("MyDBF") поймет, а если закрыта, то ошибку получишь, а так select ее сам откроет.
...
Рейтинг: 0 / 0
dbf() возвращает "левое" значение
    #34061033
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 = p.phone;
     LEFT JOIN abonents a ON VAL(k.abonent) = a.abonent;
     INTO CURSOR curUsedPull
...
Рейтинг: 0 / 0
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
40 сообщений из 40, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / dbf() возвращает "левое" значение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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