Avatar billede trer Nybegynder
17. maj 2005 - 16:36 Der 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;

Mvh
Troels
Avatar billede mugs Novice
17. maj 2005 - 17:01 #1
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

Men jeg fortsår ikke rigtig hvad du skriver.
Avatar billede trer Nybegynder
17. maj 2005 - 17:31 #2
At oprette tabellen - via DAO, ADOX eller rå sql er ikke problemet.

Problemet er at finde en metode til at kalde en hash funktion (der tager andre kolonner som input) enten som default på en kolonne eller i et view.
Avatar billede mugs Novice
17. maj 2005 - 17:42 #3
Denne ændrer standardværdien i felta i tabel2 til den aktive formular's felt1:

Dim db As DAO.Database
Set db = CurrentDb
Dim tbl As TableDef
Set tbl = db.Tabledefs("Tabel2")
tbl.Fields("felta").DefaultValue = Me!felt1
Avatar billede trer Nybegynder
17. maj 2005 - 20:17 #4
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).
Avatar billede trer Nybegynder
17. maj 2005 - 22:37 #5
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?

mvh
Troels
Avatar billede mugs Novice
18. maj 2005 - 04:32 #6
Du kan i menuen Filer > Hent eksterne data importere fremmede objekter.
Avatar billede trer Nybegynder
18. maj 2005 - 17:05 #7
Ja - men kan det gøres via script?
Avatar billede mugs Novice
18. maj 2005 - 17:22 #8
Nej - det har jeg aldrig set, men man ved aldrig.
Avatar billede trer Nybegynder
21. maj 2005 - 22:57 #9
Hej Mugs

Selvom du ikke direkte løste mit problem skal du have noget for ulejligheden. Smid et svar og vi deler points'ne.

mvh
Troels
Avatar billede mugs Novice
22. maj 2005 - 08:09 #10
Tak
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester