:: Visual Foxpro, Foxpro for DOS
To Aleksey Tsingauz - ссылки в help
Amelichev

Сообщений: 90
Дата регистрации: 26.04.2003
1.

Для функции ADBOBJECTS() мало ссылок в файле помощи. Толькочто скачал последню версию справки для VFP9 и проверил.

Language Categories > Databases > Database Manipulation Language

Так было и в 8 версии. Лично я совершенно случайно ее нашол


2.
и еще вопросы или пожелание на 10 версию

К функциям AFIELDS() и ATAGINFO() хочется еще типа Areferenses() чтобы можно было сразу собрать информацию по связям сылочной целостности. Или как это сделать без извратов (я внужден открывать открывать dbc как таблицу и анализировать, а это не удобно).

3.
Пытался както работать с событиями в контейнере БД. Заметил если включить реакцию на cобытия DBSETPROP('mybd',"DATABASE","DBCEvents",.t.) то перестает работать доступ по ODBC и OLE DB а в сообщения х об ошибке просто ошибка без особых указаний напричину), может написать в сообщении об ошибке что "Нелзя соядинятся к базе с включеными событиями" это если нельзя работать стакой БД. А если можно то что надо дополнительно делать? Ведь БД можно скапировать и намашину без VFP (runtame).



[i][small][color=Gray]Отредактировано (17.11.04 13:27)


------------------
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
Владимир Максимов

Сообщений: 14098
Откуда: Москва
Дата регистрации: 02.09.2000
2)

LOCAL laRelation(1)
?ADBOBJECT(laRelation,"RELATION")

Возвращает двумерный массив laRelation у которого

1 столбец - имя подчиненной таблицы
2 столбец - имя родительской таблицы
3 столбец - имя TAG-а подчиненной таблицы
4 столбец - имя TAG-а родительской таблицы
5 столбец - тип Referential Integrity настроенный между этими таблицами: Первая буква - UPDATE, вторая - DELETE, третья - INSERT; I - ignore, C - cascade, R - restrict




------------------
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
Amelichev

Сообщений: 90
Дата регистрации: 26.04.2003
Добрый день!

Вотоно счастье

ведь я это и хотел
спасибо
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Amelichev!

Цитата:
Заметил если включить реакцию на cобытия
DBSETPROP('mybd',"DATABASE","DBCEvents",.t.) то перестает работать доступ по
ODBC и OLE DB
То что ODBC версии 6 не может работать с БД (кстати и
с просто таблицами тоже! скажем Autoinc, ну и новые типы полей конечно)
созданной в более поздней версии - это факт и он вроде уже описан в хелпе.
А вот с OLE DB стоит разобраться поподробнее - может у тебя старая версия
провайдера установлена? Хотя VFP9Beta ставит 9-ю...
AFAIK OLE DB должен работать с такими базами - конечно если собственно сами
события не блокируют доступ к базе/таблицам.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
Amelichev

Сообщений: 90
Дата регистрации: 26.04.2003
Добрый день Igor Korolyov


То что ODBC версии 6 не может работать с БД (кстати и
с просто таблицами тоже! скажем Autoinc, ну и новые типы полей конечно)
согласен полностью

А вот с OLE DB стоит разобраться поподробнее - может у тебя старая версия
провайдера установлена? Хотя VFP9Beta ставит 9-ю...
AFAIK OLE DB должен работать с такими базами - конечно если собственно сами
события не блокируют доступ к базе/таблицам.
Я тоже надеялся что должен тработать

вот кусок кода из бд:
логин это так попутное к старту GUID() Баянова
DEFINE CLASS _db_pass AS form
Height = 23
Width = 260
Desktop = .T.
AlwaysOnTop = .T.
AutoCenter = .T.
BorderStyle = 2
Caption = 'Введите пароль. У Вас осталось 3 попытки.'
DoCreate = .T.
ControlBox = .F.
WindowType = 1
exit_cnt = 0
Name = "Form1"
PROCEDURE Init
IF _db._open_level = 1
_db._login_ok = .F.
ELSE
RETURN .F.
ENDIF
ENDPROC
ADD OBJECT Text1 AS txt
ENDDEFINE
DEFINE CLASS Txt as TextBox
Format = "K"
Height = 23
Width = 260
PasswordChar = "*"
cnt_login = 0
PROCEDURE Valid
This.cnt_login = This.cnt_login +1
IF This.cnt_login > 2
MESSAGEBOX('ПАРОЛЬ НЕ ВЕРЕН!'+CHR(13)+'ВСЕ ПОПЫТКИ ИСЧЕРПАНЫ!',16,'ВНИМАНИЕ!',5000)
bad_login()
CANCEL
ENDIF
IF !USED('_worker')
USE worker IN 0 ALIAS _worker AGAIN
ENDIF
SELECT _worker
GO TOP
LOCATE FOR ALLTRIM(UPPER(this.Value))==ALLTRIM(UPPER(_Worker.pass))
IF FOUND() AND !EMPTY(ALLTRIM(_Worker.pass))
_db._user_id = _Worker.id
_db._login_ok = .T.
ThisForm.Release
ELSE
_db._user_id = '0'
this.Value = ''
ThisForm.Caption = 'Введите пароль. У Вас осталось '+TRANSFORM(3-This.cnt_login)+IIF(3-This.cnt_login=2,' попытки.',' попытка.')
RETURN .F.
ENDIF
ENDPROC
ENDDEFINE
*
PROCEDURE bad_login
IF USED('_sys_f')
USE IN _sys_f
ENDIF
IF USED('_worker')
USE IN _worker
ENDIF
IF TYPE('_db') = 'O'
RELEASE _db
ENDIF
ENDPROC
*
PROCEDURE dbc_OpenData(cDatabaseName, lExclusive, lNoupdate, lValidate)
*Immediately after DBC is opened.
SET DATABASE TO JUSTSTEM(cDatabaseName)
SET MULTILOCKS ON
IniGenGuid()
ENDPROC
*
PROCEDURE dbc_AfterOpenTable(cTableName)
*After a table or view is opened.
IF TYPE('_db') # 'O'
IniGenGuid()
ENDIF
IF !_db._login_ok
IF _db._open_level = 0
_db._open_level = 1
ELSE
_db._open_level = _db._open_level + 1
ENDIF
IF !USED('_sys_f')
USE sys_f IN 0 ALIAS _sys_f AGAIN
ENDIF
SELECT _sys_f
IF LEN(ALLTRIM(_db._sAt)) = 0
_db._sAt = ''
LOCATE FOR UPPER(ALLTRIM(_Sys_f.name)) == 'SAT'
IF FOUND() AND !EMPTY(ALLTRIM(_Sys_f.patch))
_db._sAt = ALLTRIM(_Sys_f.patch)
ELSE
MESSAGEBOX('Переменная _sAt не создана. Требуется настройка базы данных')
bad_login()
CANCEL
ENDIF
ENDIF
LOCATE FOR UPPER(ALLTRIM(_Sys_f.name)) == 'SEND'
IF FOUND() AND !EMPTY(ALLTRIM(_Sys_f.patch))
_db._send_log = EVALUATE(ALLTRIM(_Sys_f.patch))
ELSE
MESSAGEBOX('Переменная _send_log не создана. Требуется настройка базы данных')
bad_login()
CANCEL
ENDIF
IF _db._user_id = '0'
IF _db._open_level = 1
o_pass=NEWOBJECT("_db_pass")
IF TYPE('o_pass') = 'O'
o_pass.Show(1)
WAIT CLEAR
ENDIF
ENDIF
ENDIF
IF _db._open_level = 1 AND USED('_sys_f')
USE IN _sys_f
ENDIF
IF _db._open_level = 1 AND USED('_worker')
USE IN _worker
ENDIF
_db._open_level = _db._open_level - 1
IF _db._open_level = 0 AND _db._login_ok = .F.
USE IN (cTableName)
ENDIF
ENDIF
ENDPROC
Function IniGenGuid
PUBLIC _db
_db = CREATEOBJECT('custom')
_db.AddProperty('nStartDate_',VAL(SYS(11,CTOD("01/01/2000"))))&& starting counter date
_db.AddProperty('nd96s_',0)
_db.AddProperty('nd96d_',0)
*это мне надо для моей бд и к GUID() не имеет отношения
_db.AddProperty('_login_ok',.F.)
_db.AddProperty('_open_level',0)
_db.AddProperty('_sAt','')
_db.AddProperty('_send_log',.F.)
_db.AddProperty('_user_id','0')
*** Character chain loading - for hight-numeric number imaging
_db.AddProperty('UniString_',GetUniString()) && save string as a public variable
_db.nd96s_=TickCount() && triggering last tick value
Rand(-1) && ini Random generator via system clock
RETURN


еще есть несколько других важных для меня веще которые делаются в ХП

только когда это работает доступ через OLE DB не возможен у меня. проверял на 8 фоксе на разных ПК
MDAC 2.7 и 2.8, OLE DB for VFP8 скачвал и ставил но этонедало результатв

более того я от этого отказался по совершенно другим причинам и переписал код чтоб это все запускалоси при срабатывании триггеров.
сейчас база у меня с DBSETPROP('mybd',"DATABASE","DBCEvents",.F.)

dbc_OpenData() и dbc_AfterOpenTable(cTableName) вообще убраны

и ODBC работает , но ole db так и не стал работать именно с этой БД

С другими БД где ничего подобного нет OLE DB работает хорошо и проблем нет

И вообще поставте DBSETPROP('mybd',"DATABASE","DBCEvents",.T.)
создайте файл udl для теста драйвера
Сначала добавим это
PROCEDURE dbc_AfterOpenTable(cTableName)
*After a table or view is opened.
MESSAGEBOX('Привет')
ENDPROC
Работает
Еще добавим
PROCEDURE dbc_OpenData(cDatabaseName, lExclusive, lNoupdate, lValidate)
*Immediately after DBC is opened.
MESSAGEBOX('Привет')
ENDPROC
Не работает




------------------
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
Amelichev

Сообщений: 90
Дата регистрации: 26.04.2003
И вообще поставте DBSETPROP('mybd',"DATABASE","DBCEvents",.T.)
создайте файл udl для теста драйвера
я имел ввиду, попробывать на любой бд где нет ХП
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Amelichev!

Однозначно могу заявить - наличие пользовательского интерфейса в хранимых
процедурах - это твоя серьёзнейшая ошибка. Наличие описаний классов там, тем
более визуальных - тем более.
Ну и чтоб не расстраивать тебя ещё раз потом - скажу что самописный GUID
(который вовсе не GUID и, как выяснилось, даже не всегда уникальный) это
тоже ошибка - сделай поиск в основной ветке, дабы убедится в этом - совсем
недавно обсуждали.

Почитай для начала список неподдерживаемых команд для OLE DB - там и твой
MESSAGEBOX() и DEFINE CLASS и CreateObject() так что ничего удивительного
что твой код не работает.

На той БД что есть у меня (она правда БЕЗ собвтсенно Event-ов, зато с ХП в
т.ч. и с авто-генерированными RI процедурами) установка/снятие атрибута
DBCEvents на "открываемость" базы через VFP OLE DB Provider (ADO) влияния
никакого не оказывает. Имеющаяся там примитивная ХП с одной строкой RETURN
DBC() замечательно отрабатывает.
Версия провайдера - 9.0.0.1720 - т.е. из поставки VFP9 Public Beta. Уверен
что такое же поведение будет и с провайдером последнего релиза (версии 8 SP2
если его так можно назвать).

P.S. Я лично считаю что MS зря запретило иметь в ХП классы (особенно полезен
был бы Session и соответственно отдельная сессия данных) и соответственно
CreateObject() - конечно разрешать нужно было исключительно невизуальные
классы, описанные хотя-бы в самом модуле ХП Интерфейса там конечно быть
никакого не должно совершенно и это бесспорно.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
Amelichev

Сообщений: 90
Дата регистрации: 26.04.2003
Спасибо большое за наук.
Ещераз убедился в том, что читать, читать ише раз читаь надо HELP, перед выводами и высказываниями. Ведь так можно в заблуждение ввести когонибудь.

А форум мне нравится что здесь дороже всего истина.
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
urfin

Сообщений: 328
Дата регистрации: 17.08.2004
По поводу темы этой ветки - ссылки в help :
Не нашел в хэлпе VFP9Beta описание функций GETHOST()=.NULL. и ISHOSTED()=.F.
Интересно, что это ? Может оно мне надо, а я не знаю ;)




------------------
Ratings: 0 negative/0 positive
Re: To Aleksey Tsingauz - ссылки в help
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Виктор!

Это остатки от ликвидированного ActiveDocument.




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика