Използвайте ИД на репликация на достъп във формуляр като номер

Имам редица таблици в база данни на MS Access, които трябва да използват идентификатори на репликация (GUID) като първичен ключ (и следователно също като ограничения на външен ключ във връзките между тях). Данните за тези таблици идват от външно приложение и не мога да използвам друго поле като основно, тъй като те не са уникални. (Също така избрах да не използвам локални целочислени ключове „in loco parentis“ за GUID).

Базата данни работи добре и всички връзки работят според очакванията и мога да представя свързаните записи в йерархична форма на MS Access (един към много към много). Проблемът възниква, когато се опитвам да представя преброяване като част от релациите.

Ако имам GUIDInParent и GUID в Child като две полета, мога да получа децата, като създам формуляр с Source Object = ParentToChildRelationship и Link Master Field = GUIDInParent и Link Child Field = GUIDInChild.

Ако обаче искам да посоча колко деца ще покажа (тъй като те може да са скрити под превъртана секция), използвам отделно поле на формуляр, попълнено чрез DCount("1", "ParentToChildRelationship", "[GUIDinChild] = '" & [GUIDInParent] & '")

За полето GUID - това не работи... Причината изглежда е, че докато е във формуляра, GUID (ID на репликация) се показва като "GUID" - от формата "{HHHHHHH-HHHH-HHHH-HHHH-HHHHHHHHHHHH}", когато е присвоен на друго поле, то (буквално) показва като "китайски". Дори присвояването чрез функцията GUIDAsString не променя това.

Какво се случва и има ли начин да използвам тези GUID, както възнамерявам?

„Нагласих журито“ решение, като имах две колони в таблиците (GUID - като число и GUIString - като низ), и двете зададени на една и съща стойност и използвайки изобразяването, което работи във всеки случай... Така DCount("1", "ParentToChildRelationship", "[GUIDinChild] = '" & [GUIDInParent] & '") става: DCount("1", "ParentToChildRelationship", "[GUIDinChild] = '" & [GUIDInParentString] & '") и така работи...

ТИА, Паоло


person PaoloFCantoni    schedule 03.06.2012    source източник


Отговори (1)


Обмисляли ли сте контрола в долния колонтитул на подформуляра за преброяване на записите? Това може да се посочи в главната форма по име. Като алтернатива можете да се обърнете към MySubformControl.Form.Recordset.Recordcount

person Fionnuala    schedule 03.06.2012
comment
Здравей Remou, това ли е долният колонтитул на подформуляра? Опитах ‹MySubformName›.Form.Recordset.Recordcount, но това предизвика грешка в името. Но ИСТИНСКИЯТ проблем е използването на GUID - не броят. Защо GUID се държат по този начин? - person PaoloFCantoni; 05.06.2012
comment
Преброяването започна с помощта на свойствата на подформуляра - така че благодаря за този Remou. Но въпросът по същество все още стои... Паоло - person PaoloFCantoni; 05.06.2012
comment
Грешката в името може да се дължи на използването на името на формуляра, съдържащ се в контролата на подформуляра, а не на името на контролата на подформуляра. Подформите също са форми сами по себе си, така да се каже. - person Fionnuala; 05.06.2012
comment
GUID може да бъде проблем в MS Access: stackoverflow.com/questions/393381/ - person Fionnuala; 05.06.2012