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

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

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

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

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

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

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

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

SqlServer-CAD-VFP

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

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

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


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

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


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

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

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

сделай БД новую и табличку
Код: 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
12.12.2006, 12:10
    #34192751
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соответствие типов данных VFP и MS SQL Server
ну как, финт ушами?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

табличка
Код: 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
12.12.2006, 13:14
    #34193032
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соответствие типов данных VFP и MS SQL Server
авторВы работаете с этой таблицей, как с обычной таблицей FoxPro не заморачиваясь о том, как все это будет преобразовываться в типы данных SQL-сервера

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

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

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

GETCURSORADAPTER()

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

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

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


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