Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / нубский вопрос (сортировка...) / 23 сообщений из 23, страница 1 из 1
24.07.2008, 09:25
    #35448634
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Эх, такие дела: досталась мне по наследству прога для складского учета на foxpro, все бы ничего, да напрягает одна вещь:
есть там инструме для выписки ТТН и в мемо "мфо" вводится соответствующий код отделения банка получателя, недавно столкнулся с тем, что у разных клиентов есть одинаковые мфо банков (адреса их естессна разные), ищется по базе seek (до первого совпавшего мфо, потом труба). пробовал bowse for , но тоже почему-то выводит только одного клиента, хотя есть записи с одинаковым мфо...
Помогите нормально организовать выбор банка с одинаковым мфо...
ЗЫ: сам не кодер, но начальство оставило такую задачу...

Код: 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.
************************************
if used ("adres_b")
        use in adres_b
endif
if file ("adres_b.dbf")
        delete file adres_b.dbf
endif

*sele rsx

public m.adr_bank
m.adr_bank=space( 70 )
create table adres_b (adres_bank c( 70 ), licenz c( 20 ), okyulp c( 20 ))
*m.adr_bank=rasp_ser.adr_bank
use banklist in select( 1 ) order tag mfo
sele banklist
go top
if seek(alltrim(m._mmfo))
m.adr_bank=banklist.adres
endif
*scan all for banklist.mfo=alltrim(m._mmfo)
sele adres_b
append blank
repl adres_b.adres_bank with m.adr_bank
*        adres_b.licenz with rasp_ser.licenz,;
*        adres_b.okyulp with rasp_ser.okyulp
*endscan
use in banklist
release m.adr_bank
**********************************************

...
Рейтинг: 0 / 0
24.07.2008, 09:48
    #35448666
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Код: plaintext
select mfo, count(mfo) from banklist group by mfo having count(mfo) >  1 
...
Рейтинг: 0 / 0
24.07.2008, 10:04
    #35448694
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Так?...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public m.adr_bank
m.adr_bank=space( 70 )
create table adres_b (adres_bank c( 70 ), licenz c( 20 ), okyulp c( 20 ))
*m.adr_bank=rasp_ser.adr_bank
use banklist in select( 1 ) order tag mfo
select mfo, count(mfo) from banklist group by mfo having count(mfo) >  1 
go top
if seek(alltrim(m._mmfo))
m.adr_bank=banklist.adres
endif

Если да, то выводится окно (скрин в аттаче), с которым ничего нельзя сделать...
...
Рейтинг: 0 / 0
24.07.2008, 10:09
    #35448712
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Дык, вот в окне у тебя есть четыре банка у которых одинаковые МФО (два по два)
...
Рейтинг: 0 / 0
24.07.2008, 10:10
    #35448717
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Это ясно, а вот как организовать выбор нужного банка из тех, у которых одинаковый мфо? :)
...
Рейтинг: 0 / 0
24.07.2008, 10:14
    #35448733
q123qw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Не претендую на истину, но я бы пересмотрел справочник банков!
Разве могут быть ОДИНАКОВЫЕ МФО у РАЗНЫХ банков?
...
Рейтинг: 0 / 0
24.07.2008, 10:15
    #35448736
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Для начала я, основываясь на своем немаленьком опыте банковского прогера именно в РБ, нашел бы повторы мфо и, выяснив который из них правильный, оставил бы только его. МФО должен быть уникальным, никаких повторов. Тогда и задача сама собой отпадет. Кстати, с какого перепугу МФО лежит в мемо? Зачем хранятся все девять цыфр? Везде оперируют тремя последними знаками.
...
Рейтинг: 0 / 0
24.07.2008, 10:15
    #35448738
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
в том что и дело, что бывают :(
...
Рейтинг: 0 / 0
24.07.2008, 10:16
    #35448741
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
polovoyв том что и дело, что бывают :(
Пример в студию, проверим.
...
Рейтинг: 0 / 0
24.07.2008, 10:17
    #35448743
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Выбери список банков с нужным МФО

Код: plaintext
1.
select * from banklist where mfo in
(select mfo, count(mfo) from banklist group by mfo having count(mfo) >  1 )

либо если МФО известен, то

Код: plaintext
1.
select * from banklist where banklist.mfo=alltrim(m._mmfo)
...
Рейтинг: 0 / 0
24.07.2008, 10:22
    #35448759
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Sergey Sizov.Для начала я, основываясь на своем немаленьком опыте банковского прогера именно в РБ, нашел бы повторы мфо и, выяснив который из них правильный, оставил бы только его. МФО должен быть уникальным, никаких повторов. Тогда и задача сама собой отпадет. Кстати, с какого перепугу МФО лежит в мемо? Зачем хранятся все девять цыфр? Везде оперируют тремя последними знаками.
ок, пример:
МФО 153001749, ОАО "Приорбанк" ЦБУ 400, г. Гомель, ул. Красноармейская, 3а
МФО 153001749, ОАО "Приорбанк", г. Минск, ул. В.Хоружей, 31а
МФО 153001749, ОАО "Приорбанк" ЦБУ 500, г. Брест, ул. Шевченко, 6/1
а вы говорите не бывает :) пока не было, все работало нормально, а сейчас, в качестве временного варианта приходится править базу, когда приезжают клиенты, юзающими этот мфо...
Тремя последними, это как? В базе есть мфо 150..., 153..., 151... Тремя последними тут не справишься :)
...
Рейтинг: 0 / 0
24.07.2008, 11:25
    #35448963
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Если не хочется принципиально менять код, то можно сделать так:

Код: 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.
************************************
if used ("adres_b")
        use in adres_b
endif
if file ("adres_b.dbf")
        delete file adres_b.dbf
endif

public m.adr_bank
m.adr_bank=space( 70 )
create table adres_b (adres_bank c( 70 ), licenz c( 20 ), okyulp c( 20 ))
use banklist in select( 1 ) order tag mfo
sele banklist
go top

if seek(alltrim(m._mmfo))
	SCAN WHILE banklist.mfo=alltrim(m._mmfo)
		insert into adres_b (adres_bank) values (banklist.adres)
		sele banklist
	ENDSCAN
ELSE
	* Вставка пустой строки
	insert into adres_b (adres_bank) values (space( 70 ))
ENDIF

use in banklist
**********************************************
...
Рейтинг: 0 / 0
24.07.2008, 11:29
    #35448983
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
МФО - это вы так БИК называете?
...
Рейтинг: 0 / 0
24.07.2008, 11:35
    #35449007
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
ВладимирМ , что-то ничего не происходит, как выбиралась первая запись, так и выбирается...
...
Рейтинг: 0 / 0
24.07.2008, 11:46
    #35449056
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
polovoy Sergey Sizov.Для начала я, основываясь на своем немаленьком опыте банковского прогера именно в РБ, нашел бы повторы мфо и, выяснив который из них правильный, оставил бы только его. МФО должен быть уникальным, никаких повторов. Тогда и задача сама собой отпадет. Кстати, с какого перепугу МФО лежит в мемо? Зачем хранятся все девять цыфр? Везде оперируют тремя последними знаками.
ок, пример:
МФО 153001749, ОАО "Приорбанк" ЦБУ 400, г. Гомель, ул. Красноармейская, 3а
МФО 153001749, ОАО "Приорбанк", г. Минск, ул. В.Хоружей, 31а
МФО 153001749, ОАО "Приорбанк" ЦБУ 500, г. Брест, ул. Шевченко, 6/1
а вы говорите не бывает :)
И продолжаю это утверждать. Тем более, что проверка подтвердила мое утверждение.
пока не было, все работало нормально, а сейчас, в качестве временного варианта приходится править базу, когда приезжают клиенты, юзающими этот мфо...
Тремя последними, это как? В базе есть мфо 150..., 153..., 151... Тремя последними тут не справишься :)
Небольшой ликбез по банковским технологиям РБ.
Первые шесть цыфр полного МФО (БИК по-российски) содержат информацию об области и отделении НБ (Нацинального банка). Одинакового сочетания в разных областях не может быть по определению. МФО таки уникальный, причем уникальность ему обеспечивают именно три последние цыфры, которые и используются во всех банковских операциях. В большинстве случаев для указания МФО просто отведено именно три цыфры и девять используются только в справочнике банков.

Проведенная проверка показала, что с некоторых пор появилось еще одно поле для идентификации отдельных подразделений одного банка - код подразделения. Именно оно фигурирует после "ключевого слова" ЦБУ в приведенном образце. То есть банка таки один, МФО один и уникальный, просто искать надо не только по нему, а еще и по коду подразделения/ЦБУ.
Следовательно, надо завести отдельно поле для кода подразделения и для головного поставить туда 0, для Гомельского отделения - 400, для Брестского - 500. И выбрав один банк по МФО вырать после этого еще отделение уже по коду подразделения.
...
Рейтинг: 0 / 0
24.07.2008, 11:47
    #35449059
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
polovoy ВладимирМ , что-то ничего не происходит, как выбиралась первая запись, так и выбирается...
Ну, измени условие отбора в SCAN так, чтобы оно полностью совпадало с выражением в индексном теге mfo. Вероятно, это будет примерно так

Код: plaintext
1.
2.
3.
SCAN WHILE alltrim(banklist.mfo)=alltrim(m._mmfo)
...
ENDSCAN

Поскольку код МФО (теперь БИК) у тебя хранится в мемо-поле, то есть вероятноть того, что в мемо-поле добавили перевод строк (нажали клавишу Enter). Поэтому, такие записи могут просто не отбираться по SEEK(). Нет совпадения с нужным значением. Есть варианты "обхода", но нужно в этом убедится, просмотрев содержимое базы.

Кроме того, а как ты проверяешь сколько записей оказалось отобрано? В какой момент и как просматриваешь содержимое результирующей таблицы adres_b? Сразу после SCAN или есть еще какая-то обработка?
...
Рейтинг: 0 / 0
24.07.2008, 13:22
    #35449408
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
вобщем, суть такова: желательно, чтобы после ввода мфо выскакивал поп-ап со списком отделений банков закрепленных за ним и с возможностью выбора нужного отделения...
...
Рейтинг: 0 / 0
25.07.2008, 15:09
    #35452406
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
ВладимирМ polovoy ВладимирМ , что-то ничего не происходит, как выбиралась первая запись, так и выбирается...
Ну, измени условие отбора в SCAN так, чтобы оно полностью совпадало с выражением в индексном теге mfo. Вероятно, это будет примерно так

Код: plaintext
1.
2.
3.
SCAN WHILE alltrim(banklist.mfo)=alltrim(m._mmfo)
...
ENDSCAN

Поскольку код МФО (теперь БИК) у тебя хранится в мемо-поле, то есть вероятноть того, что в мемо-поле добавили перевод строк (нажали клавишу Enter). Поэтому, такие записи могут просто не отбираться по SEEK(). Нет совпадения с нужным значением. Есть варианты "обхода", но нужно в этом убедится, просмотрев содержимое базы.

Кроме того, а как ты проверяешь сколько записей оказалось отобрано? В какой момент и как просматриваешь содержимое результирующей таблицы adres_b? Сразу после SCAN или есть еще какая-то обработка?
первый вариант все-таки работает, это я, похоже, затупил :)
теперь очередно вопрос... что дописать в коде, чтобы появился выбор банков из ADRES_B.DBF?
...
Рейтинг: 0 / 0
25.07.2008, 17:26
    #35452863
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
polovoyтеперь очередно вопрос... что дописать в коде, чтобы появился выбор банков из ADRES_B.DBF?
А что есть сейчас? Кстати, какая версия FoxPro?
...
Рейтинг: 0 / 0
25.07.2008, 17:31
    #35452885
нубский вопрос (сортировка...)
ВладимирМ polovoyтеперь очередно вопрос... что дописать в коде, чтобы появился выбор банков из ADRES_B.DBF?
А что есть сейчас? Кстати, какая версия FoxPro?
Да версия, судя по скриншоту, 2.6 ДОС. Только вот этой самой ADRES_B.DBF у нас нет. И у меня складывается впечатление, что автор хочет готовый код получить.
...
Рейтинг: 0 / 0
29.07.2008, 09:05
    #35456805
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
Вот сама дбф-ка... Ну код не то, чтоб готовый получить, просто не кодеру слегка тяжковато в фоксе :) Буду благодарен любой помощи, которая поможет разрулить ситуацию.
...
Рейтинг: 0 / 0
29.07.2008, 09:56
    #35456935
polovoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
ВладимирМ polovoyтеперь очередно вопрос... что дописать в коде, чтобы появился выбор банков из ADRES_B.DBF?
А что есть сейчас? Кстати, какая версия FoxPro?
сейчас нету ничего, т.к. изначально не было предусмотрено того, что может быть несколько отделений банка с одинаковым мфо :(
...
Рейтинг: 0 / 0
29.07.2008, 16:53
    #35458541
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нубский вопрос (сортировка...)
polovoy ВладимирМ polovoyтеперь очередно вопрос... что дописать в коде, чтобы появился выбор банков из ADRES_B.DBF?
А что есть сейчас? Кстати, какая версия FoxPro?
сейчас нету ничего, т.к. изначально не было предусмотрено того, что может быть несколько отделений банка с одинаковым мфо :(
Но ведь как-то выбранное значение банка отображается? Чтобы "вписаться" в существующую идеологию и внешний вид приложения надо знать, как это выглядит.

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


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