|
|
|
Fox Pro 2.6 - получить третий файл
|
|||
|---|---|---|---|
|
#18+
Граждане, помогите пожалуйста. Необходимо выбрать некоторые записи из двух файлов в третий файл (в курсор), предварительно отфильтровав оные. Имеется файл SUBS_CLT.dbf, из которого по определенной дате и максимальному времени (эта часть работает) я должен вытянуть сумму. Также имеется файл DOGOVOR.DBF в котором кроме всего прочего имеются поля KOD (код предприятия) и поле In_n (ИНН). В третьем файле мне нужно как поле KOD из DOGOVOR.DBF так и поле Sum1 из SUBS_CLT.dbf. «Склющить» эти два файла я могу только по полю Inn. Но в третий файл попадают дублирующиеся записи и неправильные поля, напр. Одна и таже сумма идет у двух предприятий (хотя в SUBS_CLT – только у одного). В чем может быть ошибка? Код: b_path=sys(2003)+"\" set date to german set century on dd2={27.10.2005} select 1 use alltrim(b_path+"SUBS_CLT.dbf") alias s_bank s_inn=alltrim(upper(s_bank.Inn)) select 3 use alltrim(b_path+"dogovor.dbf") alias dogovor CREATE CURSOR max_v ; (TIME3 C(5)) select 16 SELECT MAX(s_bank.TIME3) AS max_t; FROM s_bank; WHERE s_bank.Dat2 = dd2; INTO CURSOR max_v max_x=eval(field(1)) select 1 set filter to s_bank.TIME3=max_x.and.s_bank.Dat2=dd2.and.s_bank.Sum1<>0 ************************************ select 18 create cursor i_bnk; (kod_r c(3), kod c(5), Sum1 n(15,2), dat2 d(8), nom_doc c(15)) select 17 select distinct dogovor.kod_r, dogovor.kod, s_bank.Sum1, s_bank.dat2,; s_bank.nom_doc; from dogovor, s_bank; where alltrim(dogovor.In_n)=alltrim(s_bank.Inn); and s_bank.dat2 = dd2; and s_bank.time3=max_x; into cursor i_bnk Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2005, 14:23:51 |
|
||
|
Fox Pro 2.6 - получить третий файл
|
|||
|---|---|---|---|
|
#18+
Если я правильно тебя понял, то посмотри вот это Выбрать из дочерней таблицы записи с максимальной датой Модифицируй приведенный там год в соответствии со своей задачей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2005, 17:21:27 |
|
||
|
Fox Pro 2.6 - получить третий файл
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. Но, как раз выбор по максимальной дате работает, т.е. на первую часть кода не обращайте внимание. Меня интересует банальная выборка из 2-х файлов в третий, через связь по одному полю (ИНН). Почему результат нулевой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2005, 20:05:00 |
|
||
|
Fox Pro 2.6 - получить третий файл
|
|||
|---|---|---|---|
|
#18+
Т.е. весь вопрос заключается в том, почему нет результата в выборке Код: plaintext 1. 2. 3. 4. 5. 6. 7. Ну, если значения переменных dd2 и max_x корректны и есть соответствующие записи в таблице s_bank, а также должны быть записи в табице dogovor (т.е. ручками нашел соответствующие записи), то если версия младше VFP6SP5 (с учетом Service Pack) необходимо убедиться, что сделана настройка SET COLLATE TO MACHINE Это настройка по умолчанию. При настройке отличной от MACHINE в младших версиях FoxPro возможны самые разные глюки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 19:48:32 |
|
||
|
Fox Pro 2.6 - получить третий файл
|
|||
|---|---|---|---|
|
#18+
Установил set collate to machine. Выборка происходит, но не такая, какая нужна. Например я (вручную проверив) точно знаю, что за 27.10.2005, время 14.09 у меня прошло 12 платежей (т.е. имеется 12 таких записей в файле s_bank). В конечном же курсоре i_bnk я получаю 45 записей. Файл dogovor мне нужен только для получения кодов предприятий. Но в i_bnk я вижу один и тот же платеж, но продублированный под разными кодами предприятий. (отсюда столько лишних записей). В файле dogovor поле In_n - это c(14). В файле s_bank поле Inn - это c(12). По этому полю я их соединяю. Файл s_bank создан в VFP 6, а файл dogovor - в FoxPro 2.6. Может в этом проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 21:55:48 |
|
||
|
Fox Pro 2.6 - получить третий файл
|
|||
|---|---|---|---|
|
#18+
Hi AlexanderKR! SET ANSI ON - а на будущее очень советую разобраться с ключевыми полями - т.к. сцеплять таблицы по alltrim(dogovor.In_n)=alltrim(s_bank.Inn) - это полнейший бардак! У тебя код "1" сцепится с "11","111","1234", и вообще всеми прочими начинающимися на 1-цу кодами! И в обратную стророну такая-же ерунда будет. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 00:05:27 |
|
||
|
Fox Pro 2.6 - получить третий файл
|
|||
|---|---|---|---|
|
#18+
Hi AlexanderKR! SET ANSI ON - а на будущее очень советую разобраться с ключевыми полями - т.к. сцеплять таблицы по alltrim(dogovor.In_n)=alltrim(s_bank.Inn) - это полнейший бардак! У тебя код "1" сцепится с "11","111","1234", и вообще всеми прочими начинающимися на 1-цу кодами! И в обратную стророну такая-же ерунда будет. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 00:05:47 |
|
||
|
Fox Pro 2.6 - получить третий файл
|
|||
|---|---|---|---|
|
#18+
AlexanderKRВ файле dogovor поле In_n - это c(14). В файле s_bank поле Inn - это c(12). По этому полю я их соединяю. Файл s_bank создан в VFP 6, а файл dogovor - в FoxPro 2.6. Может в этом проблема? Убедись, что в файле DBF созданном в FPD установлена кодовая страница. Это можно проверить функцией Код: plaintext Если получил значени 0, то необходимо установить кодовую страницу вручную. Если речь идет о версии FoxPro for DOS, то нужно устновить кодовую страницу 866. Если FoxPro for Windows, то нужна 1251. Сделать это можно так: DO (Home()+'tools\cpzero\cpzero.prg') with "MyTable.dbf",866 Также должен существовать файл конфигурации CONFIG.FPW (это обычный текстовый файл) со строкой CODEPAGE=1251. Подробнее об этом файле и как его подключать читай здесь Часть букв при вводе заменяются латинскими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 12:29:57 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33354243&tid=1593145]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
169ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 193ms |
| total: | 459ms |

| 0 / 0 |
