Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Регистр в именах полей  [new]
Shizuku
Member

Откуда:
Сообщений: 88
Интересно, можно ли использовать в именах полей символы разного регистра - это сделало бы работу более понятной, см. файл...
4 май 12, 11:48    [12506643]     Ответить | Цитировать Сообщить модератору
 Re: Регистр в именах полей  [new]
Shizuku
Member

Откуда:
Сообщений: 88


К сообщению приложен файл. Размер - 34Kb
4 май 12, 11:49    [12506663]     Ответить | Цитировать Сообщить модератору
 Re: Регистр в именах полей  [new]
Jonny540
Member

Откуда:
Сообщений: 727
Shizuku
Интересно, можно ли использовать в именах полей символы разного регистра - это сделало бы работу более понятной, см. файл...

Если имеете ввиду строчные-прописные, то нет. А если на русском-английском - попробуйте :)
4 май 12, 13:49    [12507813]     Ответить | Цитировать Сообщить модератору
 Re: Регистр в именах полей  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6901
Имена (полей, переменных и т.д.) - регистронезависимы для компилятора, но вам же никто в самом коде не запрещает изображать имена так, как вам удобно, с большими и маленькими буквами. Вы-то ведь как разработчик работаете исключительно с кодом, а приведенный вами пример ручного создания структуры таблицы - это одна из возможностей, ведь есть и Create/Alter Table.
4 май 12, 14:58    [12508516]     Ответить | Цитировать Сообщить модератору
 Re: Регистр в именах полей  [new]
Shizuku
Member

Откуда:
Сообщений: 88
AndreTM,

а есть ли способ сгенерить код для создания таблиц по уже готовым полям? Как-то неохота все перебирать заново.
5 май 12, 00:58    [12511236]     Ответить | Цитировать Сообщить модератору
 Re: Регистр в именах полей  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6901
Конечно, есть
Вы бы только более полно намекнули, что означает это ваше "по уже готовым полям"...
5 май 12, 01:03    [12511244]     Ответить | Цитировать Сообщить модератору
 Re: Регистр в именах полей  [new]
Dag
Member

Откуда:
Сообщений: 842
См. справку по командам COPY STRUCTURE, COPY STRUCTURE EXTENDED. Или что-то типа этого
*:--------------------------------------------------------------------
*:
*:	Procedure:	xpCreateStringFromTable
*:
*:--------------------------------------------------------------------
PROCEDURE xpCreateStringFromTable
*!* создает строку создания таблицы из готовой таблицы

USE ? SHARED
AFIELDS(aFld)

cString = 'CREATE TABLE '+LOWER(SUBSTR(DBF(),RAT('\',DBF())+1,RAT('.',DBF())-RAT('\',DBF())-1))+' FREE ('
FOR i=1 TO ALEN(aFld,1)
	cString=cString+aFld(i,1)+' '+aFld(i,2)
	DO CASE
		CASE aFld(i,2)='N'
			cString=cString+'('+LTRIM(STR(aFld(i,3)))+','+LTRIM(STR(aFld(i,4)))+')'
		CASE aFld(i,2)='F'
			cString=cString+'('+LTRIM(STR(aFld(i,3)))+','+LTRIM(STR(aFld(i,4)))+')'
		CASE aFld(i,2)='C'
			cString=cString+'('+LTRIM(STR(aFld(i,3)))+')'
		CASE aFld(i,2)='V'
			cString=cString+'('+LTRIM(STR(aFld(i,3)))+')'
		CASE aFld(i,2)='Q'
			cString=cString+'('+LTRIM(STR(aFld(i,3)))+')'
	ENDCASE
	IF ALEN(aFld,1)!=i
		cString=cString+', '
	ENDIF
ENDFOR
cString=cString+')'
USE
_cliptext = cString

RETURN cString

*:--------------------------------------------------------------------
*:
*:	Procedure:	xpCreateStringFromCursor
*:
*:--------------------------------------------------------------------
PROCEDURE xpCreateStringFromCursor
*!* создает строку создания таблицы из курсора
LPARAMETERS tcCursor
LOCAL aFld[1], i, lcString
AFIELDS(aFld,tcCursor)

lcString =''
FOR i=1 TO ALEN(aFld,1)
	lcString=lcString+aFld(i,1)+' '+aFld(i,2)
	DO CASE
		CASE aFld(i,2)='N'
			lcString=lcString+'('+LTRIM(STR(aFld(i,3)))+','+LTRIM(STR(aFld(i,4)))+')'
		CASE aFld(i,2)='F'
			lcString=lcString+'('+LTRIM(STR(aFld(i,3)))+','+LTRIM(STR(aFld(i,4)))+')'
		CASE aFld(i,2)='C'
			lcString=lcString+'('+LTRIM(STR(aFld(i,3)))+')'
		CASE aFld(i,2)='V'
			lcString=lcString+'('+LTRIM(STR(aFld(i,3)))+')'
		CASE aFld(i,2)='Q'
			lcString=lcString+'('+LTRIM(STR(aFld(i,3)))+')'
	ENDCASE
	IF ALEN(aFld,1)!=i
		lcString=lcString+', '
	ENDIF
ENDFOR
RETURN lcString
5 май 12, 05:16    [12511337]     Ответить | Цитировать Сообщить модератору
 Re: Регистр в именах полей  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Dag
См. справку по командам COPY STRUCTURE, COPY STRUCTURE EXTENDED. Или что-то типа этого

Лучше AFIELDS() + CREATE FROM ARRAY, чтобы не плодить лишних файлов на диске.

Хотя, это не отменяет вопроса AndreTM. А что надо на самом деле? Не выбранный способ решения, а сама постановка задачи какая? Откуда возникла необходимость создавать структуру программно?
5 май 12, 10:55    [12512072]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить