powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / InGrid
8 сообщений из 33, страница 2 из 2
InGrid
    #36077709
Rickitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dag,
как раз работаю над этим. тока к чему привязываться пока не могу понять. время изменения? Подскажите параметры.
...
Рейтинг: 0 / 0
InGrid
    #36077712
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гы, вариант как кричать

Код: 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.
lparameters tlRefreshAlways
* tlRefreshAlways = .t.
* производит обновление без сравнения .cDocRevision > .cLockRevision
with this
	local lcAllertMessage
	text to lcAllertMessage noshow textmerge pretext  7 
		Другим пользователем закрыт доступ к документу '<<.cDocName>>'.
		Выйти из режима редактирования?
	endtext
	if !.SetDocLock( 2 ) and MESSAGEBOX(lcAllertMessage, 68 ,'Внимание')= 6  ;
		and type("this.parent")="O" and pemstatus(this.Parent, "release",  5 )
			this.parent.Release()
	endif
	if tlRefreshAlways or (.cDocRevision > .cLockRevision)
		* кто-то изменил документ,
		* нужно сделать на клиенте данные актуальными
		.ShowWaitMsg()
		local lcSqlCmd
		lcSqlCmd = .cSelectRecordsSqlCmd
		if !empty(lcSqlCmd)
			local lcTempAlias
			lcTempAlias = sys( 2015 )
			if l_sqlexec(, lcSqlCmd, lcTempAlias)> 0 
				* получили назад курсор
				this.UpdateLocalCursor(lcTempAlias)
				if vartype(.oSourceRecordsControl)='O' and pemstatus(.oSourceRecordsControl,'tt', 5 )
					.oSourceRecordsControl.refresh()
				endif
			endif
		endif
		.CleareWaitMsg()
	endif
endwith
...
Рейтинг: 0 / 0
InGrid
    #36078210
Rickitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не срабатывает .AfterCursorUpdate в чем причина. Хочу записать в таблицу datetime()
...
Рейтинг: 0 / 0
InGrid
    #36078247
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторAfterCursorUpdate

а где он должен сработать?
покажите нам что и где Вы пытаетесь записать,
что придумали.
...
Рейтинг: 0 / 0
InGrid
    #36078287
Rickitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимоавтор

а где он должен сработать?
покажите нам что и где Вы пытаетесь записать,
что придумали.
создал таблицу с полем DT
создал мастером клас КАД, в методе Aftecursorupdate написал repl поле - datetime
открыл VFP 1
создал КАД
browse таблиц
открыл VFP 1
создал КАД
browse таблиц
в VFP 1 изменяю данные поля в КАД - именяются данные в основной таблице
перехожу в VFP 2 основная таблица изменилась, КАД - нет
в таблице update данные не поменялись
...
Рейтинг: 0 / 0
InGrid
    #36078336
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторв методе Aftecursorupdate

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

методом тыка пытаетесь взять курсорадаптер?
где и что читаете?


перед тем чтобы что-то делать, посоветуйтесь вначале.
а вот для затравки, может натолкне на некую мысль.
+ ниже ветку классы наискосок для прояснения в мозгу принципа
построения фрейма с использованием кад
Код: 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.
create cursor tt (id i autoinc, cvalue c( 10 ), uuu i null)
local i
for i= 1  to  100 
	insert into tt (cvalue) values (ltrim(str(i)))
endfor

local loMyCad
loMyCad = createobject('mycad')
with loMyCad
	.SelectCmdSet('1=1')
	select mycursor
	update mycursor set cvalue=cvalue, ;
	                    uuu=null
	if tableupdate(.t.,.t.,"mycursor")
		select * from tt
	else
		local lArr[ 1 ]
		aerror(lArr)
		messagebox('не шмогла tableupdate  '+lArr[ 2 ])
	endif
endwith




DEFINE CLASS mycad AS CursorAdapter

	BufferModeOverride =  5 
	DataSourceType = "Native"
	WhereType =  4 
	ConflictCheckType =  1 
	Alias = "mycursor"
	KeyFieldList = "Id"
	Tables = "tt"
	Name = "mycad"
	UpdatableFieldList = "cvalue, uuu"
	UpdateNameList = "Id tt.Id, cvalue tt.cvalue, uuu tt.uuu"
	ConversionFunc = "uuu checkUUU"
	
	procedure SelectCmdSet
		lparameters tcWhere
		text to this.SelectCmd noshow textmerge pretext  15 
			select *
				from <<this.Tables>>
					where <<tcWhere>>
		endtext
		if this.cursorfill()
			return .t.
		else
			messagebox('не шмогла cursorfill')
		endif
enddefine

procedure checkUUU
	lparameters ttt
	return id+ 10 
endproc
...
Рейтинг: 0 / 0
InGrid
    #36078384
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+
авторнаписал repl поле - datetime

гы, по науке, эту обязанность нужно возложить на контейнер БД,
создав триггер на изменение значения записи.
...
Рейтинг: 0 / 0
InGrid
    #36079359
Rickitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,

вот, создавал по статье Юрия Шутенко
Код: 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.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
**************************************************
*-- Class:        cad_zam (d:\bred\adapter\zam_cadapters.vcx)
*-- ParentClass:  dataenvironment
*-- BaseClass:    dataenvironment
*-- Time Stamp:   07/08/09 10:08:14 AM
*
DEFINE CLASS cad_zam AS dataenvironment


	Tag = "E:\00\BASES_ND\ZAM.DBF"
	DataSource = .NULL.
	DataSourceType = "Native"
	Name = "cad_zam"


	ADD OBJECT ca_zam AS cursoradapter WITH ;
		Height =  22 , ;
		Width =  23 , ;
		UseDeDataSource = .T., ;
		SelectCmd = "select * from ZAM", ;
		CursorSchema = "KOD_ZAM N(6, 0), NAZVA_ZAM C(150), KOGO_ZAM C(150), ADRESA C(150), PASPORT C(50), KOMU_ZAM C(150), ZAM C(150), TIP_ZAM N(1, 0), NOM_DOG C(20), DATE_DOG D, STATUT M, RAH C(25), MFO C(6), BANK C(150), IPN C(12), POD_SVID C(9), TEL C(50), KRATKO C(50), BUH C(50), PLATNIKPDV N(1, 0), DOG_E N(1, 0), AVTOR C(50), KOGDA T", ;
		Alias = "a_ca_zam", ;
		Flags =  0 , ;
		KeyFieldList = "KOD_ZAM", ;
		Tables = "ZAM", ;
		UpdatableFieldList = "KOD_ZAM, NAZVA_ZAM, KOGO_ZAM, ADRESA, PASPORT, KOMU_ZAM, ZAM, TIP_ZAM, NOM_DOG, DATE_DOG, STATUT, RAH, MFO, BANK, IPN, POD_SVID, TEL, KRATKO, BUH, PLATNIKPDV, DOG_E, AVTOR, KOGDA", ;
		UpdateNameList = "KOD_ZAM ZAM.KOD_ZAM, NAZVA_ZAM ZAM.NAZVA_ZAM, KOGO_ZAM ZAM.KOGO_ZAM, ADRESA ZAM.ADRESA, PASPORT ZAM.PASPORT, KOMU_ZAM ZAM.KOMU_ZAM, ZAM ZAM.ZAM, TIP_ZAM ZAM.TIP_ZAM, NOM_DOG ZAM.NOM_DOG, DATE_DOG ZAM.DATE_DOG, STATUT ZAM.STATUT, RAH ZAM.RAH, MFO ZAM.MFO, BANK ZAM.BANK, IPN ZAM.IPN, POD_SVID ZAM.POD_SVID, TEL ZAM.TEL, KRATKO ZAM.KRATKO, BUH ZAM.BUH, PLATNIKPDV ZAM.PLATNIKPDV, DOG_E ZAM.DOG_E, AVTOR ZAM.AVTOR, KOGDA ZAM.KOGDA", ;
		Name = "ca_zam"


	PROCEDURE BeforeOpenTables
		*** Select connection code: DO NOT REMOVE

		local lcDBC
		lcDBC = 'zam'
		if used(lcDBC)
			SELECT(lcDBC)
		else
			USE 'E:\00\BASES_ND\ZAM.DBF' IN  0  ALIAS zam SHARED 
		endif
		*** End of Select connection code: DO NOT REMOVE
	ENDPROC


	PROCEDURE ca_zam.BeforeCursorUpdate
		LPARAMETERS nRows, lForce
		IF lForce = .T.
			IF DATETIME()>update_table.upd_time
				this.CursorRefresh()
			ENDIF 
		ENDIF 
	ENDPROC


	PROCEDURE ca_zam.AfterCursorUpdate
		LPARAMETERS nRows, lTableUpdateResult, cErrorArray
		IF lTableUpdateResult = .T.
			REPLACE upd_time WITH DATETIME() IN update_table
		ENDIF 
	ENDPROC


	PROCEDURE ca_zam.AfterUpdate
		LPARAMETERS cFldState, lForce, nUpdateType, cUpdateInsertCmd, cDeleteCmd, lResult
	ENDPROC


	PROCEDURE ca_zam.Init
		*** Setup code: DO NOT REMOVE
		local llReturn
		do case
			case not pemstatus(This, '__VFPSetup',  5 )
				This.AddProperty('__VFPSetup',  0 )
			case This.__VFPSetup =  1 
				This.__VFPSetup =  2 
			case This.__VFPSetup =  2 
				This.__VFPSetup =  0 
				return
		endcase
		set multilocks on
		llReturn = dodefault()
		*** End of Setup code: DO NOT REMOVE

		*** Setup code: DO NOT REMOVE
		if This.__VFPSetup =  1 
			This.__VFPSetup =  2 
		endif
		return llReturn
		*** End of Setup code: DO NOT REMOVE
	ENDPROC


	PROCEDURE ca_zam.AutoOpen
		*** Setup code: DO NOT REMOVE
		if not pemstatus(This, '__VFPSetup',  5 )
			This.AddProperty('__VFPSetup',  1 )
			This.Init()
		endif
		*** End of Setup code: DO NOT REMOVE
	ENDPROC


ENDDEFINE
*
*-- EndDefine: cad_zam
**************************************************
я понял, что не туда вставил replace, какой метод в КАД отвечает за обновление исходной таблицы?
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / InGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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