17. maj 2005 - 16:36Der er
8 kommentarer og 2 løsninger
COMPUTED COLUMNS og HASH værdier
Hej
Jeg har behov for at lave en "computed column" i access som indeholder en hash (crc32, md5 eller tilsvarende) for en række andre kolonner i en tabel.
Eneste vej jeg p.t. har fundet er, at loope gennem en tabel i en form og fyre updates af efter at have beregnet hash'en.
Det jeg søger er en måde at definere en tabel eller et view a la dette:
create table data ( id integer identity(1,1) primary key, navn varchar(50) with compression, adresse varchar(50) with compression, postnr varchar(5) with compression, hash integer default(MakeHash(adresse+postnr)) );
eller
create view data_with_hash as select navn, adresse, postnr, makehash(adresse+postnr) as hash from data;
Du kan oprette et felt i en eksisterende tabel med denne, kræver refetrence til DAO:
Dim db As Database, tdf As TableDef, fld As Field Set db = CurrentDb Set tdf = db.Tabledefs!Tabel2 Set fld = tdf.CreateField("felt4", dbLong) fld.DefaultValue = "250000" Set db = Nothing
Ja, som jeg skrev i starten så har jeg heller ikke problem med at indsætte værdien via en form og kalde funktionen fra et modul. Problemet er, at en sådan løsning er alt for langsom og i øvrigt ikke kan anvendes i en join.
Derfor vil jeg have det defineret som en default på en kolonnen således at beregningen sker ved indsættelse af data eller som en beregning i et view (aka query).
Jeg har nu leget lidt mere - umiddelbart ligner det, at jeg kan erklære mine hash-funktioner i et modul og så kalde dem fra mine queries / views - a la
select crc32(adresse & postnr) from data;
Ved du om jeg kan importere et module ind i en access database via et script?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.