Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подстрока / 18 сообщений из 18, страница 1 из 1
16.09.2008, 08:15
    #35541050
Niara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Доброго времени суток!
Ситуация примерно такая...
имеется несколько dbf с разными наименованиями:
11000.dbf
55123.dbf
66321.dbf

И еще одна база, которая содержит двузначный ID и наименование организаций:
ID Организация
11 "Куку"
55 "Жужу"
66 "Лала"

Нужно при выборе одной из баз вроде 11 000.dbf производить сверку, по базе с ID, первых двух символов из наименования файла dbf.

Подскажите пожалуйста, как это можно реализовать в Foxpro2.6?
...
Рейтинг: 0 / 0
16.09.2008, 08:46
    #35541076
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
>... первых двух символов из наименования файла dbf.

lcNaimen='119084'

?Left(lcNaimen, 2)
?Substr(lcNaimen, 1, 2)



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.09.2008, 10:24
    #35541239
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Возможно такой код поможет:
Код: plaintext
1.
2.
3.
4.
5.
FILNUM = ADIR(MAS,'D:\TTN\*.DBF')
SELE  0 
CREATE CURSOR CDBF (NDBF C( 20 ))
APPEND FROM ARRAY MAS
SELECT CDBBF.* FROM CDBBF,SP_ORG WHERE Left(NDBF, 2 )=SP_ORG.ID 
...
Рейтинг: 0 / 0
17.09.2008, 06:53
    #35543265
Niara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
LUCIANВозможно такой код поможет:
Код: plaintext
1.
2.
3.
4.
5.
FILNUM = ADIR(MAS,'D:\TTN\*.DBF')
SELE  0 
CREATE CURSOR CDBF (NDBF C( 20 ))
APPEND FROM ARRAY MAS
SELECT CDBBF.* FROM CDBBF,SP_ORG WHERE Left(NDBF, 2 )=SP_ORG.ID 


сложный вариант с массивом.по проще бы...:(
...
Рейтинг: 0 / 0
17.09.2008, 08:13
    #35543302
Подстрока
Niara[
сложный вариант с массивом.по проще бы...:(
Давно не писал на Фоксе. Попробую...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
function check
* Параметр  функции содержит имя открываемого файла
parameter filename
private fileid
fielid = left(alltrim(filename), 2 )

*В файле Organ.dbf содержится справка по идентификаторам
if !used('organ')
 use organ in  0  shared
endif
 select organ
* Вариант проверки №  1 
 locate for id = fileid
 if found()
   * что-то делаем
    return .t.
 else
   wait window "Такого ID не обнаружено..." nowait
   return .f.
 endif

* Вариант проверки №  2 
* select * from organ into cursor q where organ.id = fileid
* if reccount() <>  0 
* * что-то делаем
*  return .t.
* else
*    wait window "Такого ID не обнаружено..." nowait
*    return .f.
* endif

* Заканчиваем функцию
return .t.

* использование функции
* result = check("11000.dbf")
* if result
*   wait window "ID обнаружено в базе" nowait
* endif

...
Рейтинг: 0 / 0
17.09.2008, 09:32
    #35543398
Niara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
тут все понятно :) спасибо огромное! есть только маленькое "но" - я выбираю базу с помощью
Define popup file, из разворачивающейся дирректории... не получается присвоить имя выбранной базы переменной.
...
Рейтинг: 0 / 0
17.09.2008, 09:38
    #35543407
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Niaraтут все понятно :) спасибо огромное! есть только маленькое "но" - я выбираю базу с помощью
Define popup file, из разворачивающейся дирректории... не получается присвоить имя выбранной базы переменной.
если файл уже открыт - используй функцию DBF() для получения имени файла.
...
Рейтинг: 0 / 0
17.09.2008, 09:48
    #35543421
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Niaraя выбираю базу с помощью Define popup file, из разворачивающейся дирректории... не получается присвоить имя выбранной базы переменной.
Есть функция PROMPT() для получения выбранного из Define popup file.

Порылся в FPD-шных исходниках, нашел такое решение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
lcfname = ''
on key label enter do press
define popup main from  1 ,  31  to  22 ,  49  prompt file like copy\re*.rar shadow
activate popup main
on key label enter
*... далее в lcfname имя выбранного файла


procedure press
lcfname = prompt()
keyboard '{Enter}' plain
return

ЗЫ А как выбранный файл открывается если его имя неизвестно? Где-то в коде оно все равно есть.
...
Рейтинг: 0 / 0
17.09.2008, 10:08
    #35543473
Niara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
prompt и dbf пробовала. он "кушает" весь путь с именем вмете. а мне надо как то только имя базы. может что то не так делаю?
...
Рейтинг: 0 / 0
17.09.2008, 10:23
    #35543526
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Niaraprompt и dbf пробовала. он "кушает" весь путь с именем вмете. а мне надо как то только имя базы. может что то не так делаю?
Выделить имя файла из строки, содержащей полный путь доступа можно при помощи функций строкового анализа. Таких как SubStr(), Right(), Rat(), at() и т.п.

Логика такая:

1. Ищем первый символ "\" начиная с правого края
2. "Откусываем" кусок строки до найденного символа - это и есть только имя файла с расширением

Программно это выглядит так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
* fileName - имя файла с полным путем доступа

* Находим положение последнего символа "\"
posNum = RAT("\", m.fileName)

* Определяем количество символов от найденного положения до конца строки
endLen = len(m.fileName) - m.posNum

* Вырезаем эти концевые символы
onlyName = right(m.fileName, m.endLen)

Переменная onlyName и будет содержать только имя файла с расширением. Если надо "откусить" еще и расширение, то аналогичным образом ищем крайний справа символ точки.

Надо искать именно справа, поскольку само имя файла может содержать точку. Но расширением считаются только концевые символы. После последней точки.
...
Рейтинг: 0 / 0
17.09.2008, 10:25
    #35543531
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Niaraprompt и dbf пробовала. он "кушает" весь путь с именем вмете. а мне надо как то только имя базы. может что то не так делаю?
А из полного пути имя выделить никак?
Код: plaintext
1.
lcFullPath = 'C:\WINDOWS\system32\12510866.CPX'
? substr(lcFullPath, rat('\', lcFullPath) +  1 ,  2 )
...
Рейтинг: 0 / 0
17.09.2008, 10:27
    #35543538
Niara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Dima T Niaraprompt и dbf пробовала. он "кушает" весь путь с именем вмете. а мне надо как то только имя базы. может что то не так делаю?
А из полного пути имя выделить никак?
Код: plaintext
1.
lcFullPath = 'C:\WINDOWS\system32\12510866.CPX'
? substr(lcFullPath, rat('\', lcFullPath) +  1 ,  2 )

ВО!! Спасибо :) не дошло
...
Рейтинг: 0 / 0
17.09.2008, 10:29
    #35543540
Niara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Всем огромное спасибо !!! очень помогли
...
Рейтинг: 0 / 0
17.09.2008, 10:29
    #35543544
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Dima T
Код: plaintext
1.
lcFullPath = 'C:\WINDOWS\system32\12510866.CPX'

Код: plaintext
?Juststem(lcFullPath)
...
Рейтинг: 0 / 0
17.09.2008, 10:32
    #35543552
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
NiaraПодскажите пожалуйста, как это можно реализовать в Foxpro2.6 ?

Sergey Sizov.
Код: plaintext
?Juststem(lcFullPath)


Не сработает
...
Рейтинг: 0 / 0
17.09.2008, 10:33
    #35543557
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Dima T NiaraПодскажите пожалуйста, как это можно реализовать в Foxpro2.6 ?

Sergey Sizov.
Код: plaintext
?Juststem(lcFullPath)


Не сработает
Где? Почему?
...
Рейтинг: 0 / 0
17.09.2008, 10:34
    #35543561
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Sergey Sizov.Где?

Niaraв Foxpro2.6 ?
...
Рейтинг: 0 / 0
17.09.2008, 10:34
    #35543562
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подстрока
Надо свего лишь добавить строчку
Код: plaintext
set library to fpath
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подстрока / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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