Имам редица таблици в база данни на 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] & '")
и така работи...
ТИА, Паоло