powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не добавляются столбцы во временную таблицу
6 сообщений из 6, страница 1 из 1
Не добавляются столбцы во временную таблицу
    #38508489
Гость_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Создается временная таблица и в нее должны добавляться столбцы в зависимости от настроек пользователя.
Но в программе стали выходить ошибки, выяснили что по причине отсутствия дополнительных столбцов. У некоторых работает, а вот у некоторых появилась такая проблема. Хотя программа раньше работала, изменений никаких не было.
...
Рейтинг: 0 / 0
Не добавляются столбцы во временную таблицу
    #38508695
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость_2013,

Ну и кто знает, как вы "столбцы" создаете?
...
Рейтинг: 0 / 0
Не добавляются столбцы во временную таблицу
    #38508956
Гость_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

Вот, так происходит добавление

SELECT rid, header, norder, 0 change, user_i, date_i, user_u, date_u;
FROM nad_dop;
ORDER BY norder;
INTO TABLE g_temp+'tnad_tabl'

SELECT rid, header, norder, priz;
FROM nad_dop;
ORDER BY norder;
INTO TABLE g_temp+'tNad_Dop_tabl'

PRIVATE cOrder, i
i = 0
SELECT tNad_Dop_tabl
GO top
SCAN
i = i + 1
cOrder = ALLTRIM(STR(i))
ALTER TABLE tnad_tabl;
ADD COLUMN nad&cOrder N(3,0)
SELECT tnad_tabl
SCAN
....
ENDSCAN
ENDSCAN
...
Рейтинг: 0 / 0
Не добавляются столбцы во временную таблицу
    #38508996
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А после внутреннего ENDSCAN текущий алиас установлен в tNad_Dop_tabl ?
...
Рейтинг: 0 / 0
Не добавляются столбцы во временную таблицу
    #38509130
Гость_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

в данном коде нет.

В другом месте стоит, но ошибка такая же. Просто программа работает у меня и у других (кроме пары пользователей), у одного пользователя после смены компа заработала, а через некоторое время снова появилась, не понятно...

SELECT *;
FROM vid_1;
ORDER BY rid;
INTO TABLE g_temp+'tVid_price'

PRIVATE cOrder, i
i = 0
SELECT tVid_price
SCAN
i = i + 1
cOrder = ALLTRIM(STR(i))
ALTER TABLE tPlace;
ADD COLUMN vid&cOrder N(6,2)
ALTER TABLE tPlace;
ADD COLUMN vido&cOrder N(6,2)

SELECT tPlace
GO top
SCAN
IF SEEK(STR(tPlace.place)+STR(tvid_price.rid), 'place_perc', 'unical')
REPLACE vid&cOrder WITH place_perc.percent IN tPlace
ELSE
REPLACE vid&cOrder WITH tVid_price.percent,;
change WITH 1;
IN tPlace
THIS.changed = .T.
ENDIF
SELECT tPlace
ENDSCAN
SELECT tVid_price
ENDSCAN
GO TOP IN tPlace
...
Рейтинг: 0 / 0
Не добавляются столбцы во временную таблицу
    #38509302
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст ошибки приведите. Дословно, а не свою интерпретацию.

Кстати, Вы в курсе, что таблицу можно создать командой CREATE TABLE ... FROM ARRAY ...? Т.е. из предварительно созданого двумерного массива определенной структуры? Структура массива приведена в описании функции AFIELDS(). Для создания таблицы достаточно первых 6 столбцов.

Код: sql
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
* Структура исходной таблицы
Local laNad_Dop(1)
Select nad_dop
=Afields(laNad_Dop)

* Структура создаваемой таблицы
Local laTnad_tabl(1,6), lnI, lnJ, lnZ
lnZ = 0
* Копирую в целевой массив структуру нужных полей
For lnI = 1 to Alen(laNad_Dop, 1)
	* В массиве имена полей в верхнем регистре
	If InList(laNad_Dop[m.lnI, 1], 'RID', 'HEADER', 'NORDER', 'USER_I', 'DATE_I', 'USER_U', 'DATE_U')
		lnZ = m.lnZ + 1
		Dimension laTnad_tabl(m.lnZ,6)
		For lnJ = 1 to 6
			laTnad_tabl[m.lnZ, m.lnJ] = laNad_Dop[m.lnI, m.lnJ]
		EndFor
	EndIf
EndFor

* Создаю структуру поля Change
lnZ = lnZ + 1
Dimension laTnad_tabl(m.lnZ,6)
laTnad_tabl[m.lnZ, 1] = 'Change'
laTnad_tabl[m.lnZ, 2] = 'N'
laTnad_tabl[m.lnZ, 3] = 1
laTnad_tabl[m.lnZ, 4] = 0
laTnad_tabl[m.lnZ, 5] = .F.
laTnad_tabl[m.lnZ, 6] = .F.

* Создаю структуру дополнительных полей
* Как поля с именем вида NAD1, NAD2, NAD3,...
* Количество которых равно количеству записей в таблице nad_dop

* Количество записей в таблице nad_dop
Local Array laRecords(1)
Select Count(*) from nad_dop into array laRecords

Local lcFieldName
For lnI = 1 to laRecords[1]
	lcFieldName = 'NAD' + ltrim(Str(m.lnI))
	lnZ = lnZ + 1
	Dimension laTnad_tabl(m.lnZ,6)
	laTnad_tabl[m.lnZ, 1] = m.lcFieldName
	laTnad_tabl[m.lnZ, 2] = 'N'
	laTnad_tabl[m.lnZ, 3] = 3
	laTnad_tabl[m.lnZ, 4] = 0
	laTnad_tabl[m.lnZ, 5] = .F.
	laTnad_tabl[m.lnZ, 6] = .F.
EndFor

* Создаю целевую таблицу
Create Table (g_temp+'tnad_tabl.dbf') FREE From Array laTnad_tabl

* Наполняю таблицу данными 
* Синтаксис корректен только для VFP9
* Для младших версий следует использовать APPEND FROM или SCAN + INSERT
Insert into tnad_tabl ;
	(RID, HEADER, NORDER, USER_I, DATE_I, USER_U, DATE_U) ;
Select ;
	RID, HEADER, NORDER, USER_I, DATE_I, USER_U, DATE_U ;
from nad_dop ;
order by nOrder

* Далее можно модифицировать поля NAD1, NAD2, NAD3,... сканируя уже созданую таблицу
Select tnad_tabl
Scan
	lcFieldName = 'NAD' + ltrim(Str(m.lnI))
	If (...)
		replace (m.lcFieldName) with ...
	Else
		replace (m.lcFieldName) with ...
	EndIf
EndScan



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


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