powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Соответствие типов данных VFP и MS SQL Server
25 сообщений из 45, страница 1 из 2
Соответствие типов данных VFP и MS SQL Server
    #34192278
Valentin_tima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые!
Может у кого-то есть более менее структурироанные познания в этой области?
Необходимо это мне для все той же проблемы перехода на SQL, выполняю перенос и сталкиваюсь с проблемой неоднозначности в этом вопросе, так может есть вполне определенное соответствие для типов данных (VFP и MS SQL Server)?
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192393
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема неоднозначности
решается автоматически
с пом. курсорадаптера и курсорсхемы
прекрасный и простой способ абстрагироваться от проблем несоответствия типов

иначе, большие проблемы и километры ручного кода
аля cast(LINK as varchar(16)) as LINK
и бубны при апдейте
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192419
Valentin_tima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex11100проблема неоднозначности
решается автоматически
с пом. курсорадаптера и курсорсхемы
прекрасный и простой способ абстрагироваться от проблем несоответствия типов

иначе, большие проблемы и километры ручного кода
аля cast(LINK as varchar(16)) as LINK
и бубны при апдейте

А можно подробнее, cast() где писать? В свойстве СА - ConversionFunc?
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192439
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
фильм "Кавказская пленница"

Бывалый-Трус-Балбес

едет машина, вспомни как дергается трус, а Балбес и Бывалый его
держат за руки

это была абстракция

переходим к делу

SqlServer-CAD-VFP

вот КАД - это трус
и его нужно научить дергаться и крепко крепко держать за руки

так это все наводка,
ладно, вначале хелп, и поиск, затем вопросы
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192449
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужно поднять КАД
и настроить свойства

номер коннекта
тип коннекта
селекткмд
апдейтполя
...
курсорсхему


вот в зависимости от курсорсхемы
лис и будет преобразовывать типы
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192475
Valentin_tima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex11100нужно поднять КАД
и настроить свойства

номер коннекта
тип коннекта
селекткмд
апдейтполя
...
курсорсхему


вот в зависимости от курсорсхемы
лис и будет преобразовывать типы

Спасибо, проясняется ...
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192507
Valentin_tima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex11100вот в зависимости от курсорсхемы
лис и будет преобразовывать типы

Так типы будут преобразовываться и при Insert'е? Т.е. мне надо залить строку в таблицу на сервере, и она туда уйдет с типом данных сервера?
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192729
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас кулинары поналетят
чегой-то молчат экзекисты-мазохисты, шучу

сделай БД новую и табличку
Код: plaintext
1.
2.
3.
4.
CREATE TABLE [testBigInt] (
	[bigint] [bigint] NULL 
) ON [PRIMARY]
GO

выполни код
Код: 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.
41.
42.
close databases all

local lcConnString, lnConnection, ;
	loMyCAD as CursorAdapter, ;
	laErrors[ 1 ]
text to lcConnString noshow pretext  15 
	Driver=SQL Server;
	SERVER=beaver\l00;
	DATABASE=Kot_MyTest;
	uid=kot;
	pwd=;
endtext	
lnConnection = sqlstringconnect(lcConnString)
if lnConnection<= 0 
   messagebox('не подцепился')
   return 
endif

loMyCAD = createobject('CursorAdapter')
with loMyCAD
	.Alias              = 'MyAlias'
	.DataSourceType     = 'ODBC'
	.DataSource         = lnConnection
	.SelectCmd          = "select * from testBigInt"
	.Tables             = 'testBigInt'
	.BufferModeOverride =  5 
	.cursorschema       = "bigInt c(16)"
	.UpdatableFieldList = 'bigInt'
	.updateNameList     = 'bigInt testBigInt.bigInt'
	if .CursorFill()
		select MyAlias
		append blank
		replace bigint with '1234567890123456'
		if !tableupdate(.t.,.t.,.Alias)
			aerror(laErrors)
		    messagebox(laErrors[ 2 ])
		endif
	else
		aerror(laErrors)
		messagebox(laErrors[ 2 ])
	endif .CursorFill()
endwith

что это демонстрирует?
если ты насосешь селектом бигинт, то он для лисы непонимаем
нужно выпендриваться преобразованием

дальше смотри, курсорсхема его сама подпиняет в строку
дальше работаем как со строкой

и при апдейте, он -КАд - дурак
сам делает
Код: plaintext
1.
2.
3.
4.
5.
6.
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigInt (bigInt) VALUES (@P1 )', N'@P1 varchar(20)', '1234567890123456    '
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go

вот такой этот КАД
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192751
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну как, финт ушами?

а ече такую колбасу можно наложить каскадом
и махом свалить на сервер
без всякого выпендрежа с темповыми таблицами, ХП ....
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192841
Valentin_tima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет первого примера понял, т.е. при заливе указывается явно, что нужно лить строкой, а во втором в INSERT'е тож явно указывается тип что-ли?
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192862
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
второй инсерт не нужен - это я тебе показал то, что сервер делает
это можно мосмотреть в профайлере

для работы с сервером
нужен только правильно настроенный КАД

и настраивать его нужно не руками,
а придумать себе билдер, который будет формировать
какие-то настроечные сущности, которые будут цепляться к классам-шаблонам
и при подъеме этих классов. автоматически настраивать вышеуказанные КАД

ух..., бедные прокуроры...
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192913
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, еще финт

поставь на сервере на табличку констрейнт на поле
на уникальность и на нулл

и попробуй проапдейтить с нуллом
или повторенным значением

вот тебе и проверка на уникальность, вот тебе взад и сообщение юзверу,
вот тебе и ненадобность при ручном вводе каких-то
излишних шаманств при простых проверках

(ладно, любителям ХП - расслабьтесь - ХП я не отрицаю)
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192932
Valentin_tima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это все понятно (про билдер молчу), но если у меня есть на сервере пустая таблица и мне нужно в нее первый раз залить, а у меня например тип DATA а там только DATETIME, или мемо поле? Как может помочь курсор схема?
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192963
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если перевести на русский язык, то, что было сказано до этого, то все значительно проще.

FoxPro работает с таблицами. Для него это привычно и понятно. Результатом работы CursoAdapter как раз и является таблица в привычном для FoxPro виде.

Это значит, что Вы работаете с этой таблицей, как с обычной таблицей FoxPro не заморачиваясь о том, как все это будет преобразовываться в типы данных SQL-сервера. Т.е. просто добавляете/удаляете/изменяете записи в этой табличке, как в обычной табличке FoxPro.

По команде TableUpdate() или по другому событию сброса буфера для строковой буферизации все сделанные в этой табличке изменения автоматически сбрасываются в SQL-сервер.

CursorAdapter берет на себя функции переводчика. Он переводит в явном виде типы данных FoxPro в типы данных SQL-сервера и наоборот. Перевод осуществляется автоматически в момент закачки данных на FoxPro или в момент отправки обновлений на SQL-сервер.

Вся это прорва настроек CursorAdaptera как раз и служит для того, чтобы прописать все необходимые соответствия. ЯВНОЕ преобразование типов указывается только и исключительно в настройках CursorAdapter.

Каждая настройка CursorAdapter явным образом определяет какое-то свойство и (или) действие, выполняемое при переводе данных от SQL-сервера к FoxPro и наоброт. Подробнее читай на сайте Юрия Шутенко. На foxclub тебе уже дали ссылку.
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192972
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы о чём тут вообще? Маппинг типов описан в хелпе в топике Data Type Conversion Control

если нужно выяснить структуру - просто sqlexec(cn,"select * from tableName") и посмотреть на поля созданного курсора. Программно или руками.

Всё происходит автоматом. Но некоторые типы полей мапятся плохо, bigint например уже отметили
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34192979
Valentin_tima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Владимир, почитаю сайт Шутенко.
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193010
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
закрепляем пройденный материал

табличка
Код: plaintext
1.
2.
3.
4.
CREATE TABLE [testBigDate] (
	[BigDate] [datetime] NULL 
) ON [PRIMARY]
GO


код на лисе
Код: 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.
41.
42.
43.
44.
close databases all

local lcConnString, lnConnection, ;
	loMyCAD as CursorAdapter, ;
	laErrors[ 1 ]
text to lcConnString noshow pretext  15 
	Driver=SQL Server;
	SERVER=beaver\l00;
	DATABASE=Kot_MyTest;
	uid=kot;
	pwd=;
endtext	
lnConnection = sqlstringconnect(lcConnString)
if lnConnection<= 0 
   messagebox('не подцепился')
   return 
endif

loMyCAD = createobject('CursorAdapter')
with loMyCAD
	.Alias              = 'MyAlias'
	.DataSourceType     = 'ODBC'
	.DataSource         = lnConnection
	.SelectCmd          = "select * from testBigDate"
	.Tables             = 'testBigDate'
	.BufferModeOverride =  5 
	.cursorschema       = "bigDate d(8)"
	.UpdatableFieldList = 'bigDate'
	.updateNameList     = 'bigDate testBigDate.bigDate'
	if .CursorFill()
		for i= 1  to  10 
		   insert into MyAlias values (date())
		endfor
		select MyAlias
		brow
		if !tableupdate(.t.,.t.,.Alias)
			aerror(laErrors)
		    messagebox(laErrors[ 2 ])
		endif
	else
		aerror(laErrors)
		messagebox(laErrors[ 2 ])
	endif .CursorFill()
endwith


что делал сервер
Код: 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.
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.
75.
76.
77.
78.
select  504 ,c.name,c.description,c.definition from master.dbo.syscharsets c where c.id = convert(tinyint, databasepropertyex ( db_name() , 'sqlcharset'))
go
select USER_NAME() select usertype,type,name from systypes where usertype>= 257 
go
exec sp_datatype_info  1 
go
exec sp_datatype_info  12 
go
exec sp_datatype_info - 2 
go
exec sp_datatype_info - 3 
go

-- вот селект
select * from testBigDate
go

-- а это после команды таблапдейт
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Dec 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Dec 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Jan 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Dec 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Jan 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Dec 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Dec 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Jan 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Dec 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go
set implicit_transactions on 
go
exec sp_executesql N'INSERT INTO testBigDate (bigDate) VALUES (@P1 )', N'@P1 datetime', 'Dec 12 2006 12:00:00:000AM'
go
IF @@TRANCOUNT >  0  COMMIT TRAN
go


дальше думаем, стоит оно того или нет
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193032
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторВы работаете с этой таблицей, как с обычной таблицей FoxPro не заморачиваясь о том, как все это будет преобразовываться в типы данных SQL-сервера

это не только проще, а это помогает абстрагироваться
от сложной технологии получения и сохранения данных

это способ избежать рутины
и не наделать ошибок при посроение объектной модели данных,
построении сложной бизнеслогики
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193066
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
вы о чём тут вообще

в самом начале моего обучения профессии, которую я выбрал на всю жизнь,
мой учитель мне сказал: "Существуют люди, которые верят в летающие тарелки, и им просто бесполезно ..., также оч.много сторонников теологии..."
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193082
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фигня какая-то
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193097
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну конечно

GETCURSORADAPTER()

придумали дЭбилы
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193162
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты хоть посмотри на вопрос и на то количество кода который ты зачем-то сюда запостил
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193200
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по-секрету...

Юран Моисеевич Каац будет жить вечно ...
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193369
Valentin_tima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1024ты хоть посмотри на вопрос и на то количество кода который ты зачем-то сюда запостил
Нормально, нормально, чем больше кода, тем больше пищи для размышлений и разговоров... :)
...
Рейтинг: 0 / 0
Соответствие типов данных VFP и MS SQL Server
    #34193492
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100
Код: plaintext
1.
2.
3.
...
set implicit_transactions on 
..

А хорошо ли КАЖДЫЙ раз устанавливать неявную транзакцию?!
А хорошо ли вообще работать с установкой неявной транзакцией?
Чем вы можете аргументировать использование именно неявную транзакцию?
С уважением, Алексей.
...
Рейтинг: 0 / 0
25 сообщений из 45, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Соответствие типов данных VFP и MS SQL Server
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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