17. maj 2003 - 20:17Der er
29 kommentarer og 1 løsning
max antal poster i en tabel..(Licenssystem)
Hej med dig, jeg er ved at lave en kundedatabase, hvor jeg det skal være sådan at hvis der ikke er købt licens, så kan de ikke opratter mere en 10 poster, men køber de en licens så kan de opratte det antal poster som licens giver rat til.
Tabel1 indeholder kundeoplysninger om bl.a. antal tilladte poster. Feltet id er primær nøgle. I Tabel2 opretter du poster ved at vælge et id, der repræsenterer kunden. Valget sker ved hjælp af en kombinationsboks.
Tabellerne er joinforbunde ved felterne id. Koden ser således ud:
Private Sub Kommandoknap10_Click() Dim a As Integer Dim b As Integer kunde = Me!Id a = DLookup("[antal]", "Tabel1", "[id] = " & kunde & "") b = DCount("*", "Tabel2", "[id] = " & kunde & "") If b >= a Then Me.Undo Me.AllowAdditions = False MsgBox "Der er ikke licens til flere poster." End If End Sub
Vi skal bruge 2 oplysninger: Det tilladte antal poster for den specifikke kunde, og Antal oprettede poster for den samme kunde.
Jeg opretter 2 variabler (a og b): a ved DLookup indeholder det antal poster, som kunden må oprette. b ved DCount indeholder det antal poster, der er oprettet af kunden.
Derefter er det blot at opsætte en betingelse, at hvis b er > eller = a, så kan kunden ikke oprette yderligere poster. Derfor kan du indsætte Me.Undo, der annullerer oprettelsen og Me.AllowAdditions = False, der blokerer for oprettelse af nye poster.
Det er således ligegyldigt om kunden har licens eller ej, der tælles udelukkende på feltet antal i Tabel1. Du kan jo som standardværdi for nye poster indsætte tallet 10, idet jeg antager, at en kunde afprøver varen først inden der købes licens. Når kunden så har købt licens, kan du rette tallet i Tabel1.
let nævner i sit spørgsmål: ...at hvis der ikke er købt licens, så kan de ikke opratter mere en 10 poster, men køber de en licens så kan de opratte det antal poster som licens giver rat til.
Derfor konkluderer jeg flg:
Hvis der ikke er købt licens, er det tilladte antal poster for den specifikke kunde = 10. Hvis der er købt licens, er det tilladte antal poster for den specifikke kunde variende afhængig af den købte licens.
Det er derfor jeg benytter Dlookup for at hente antal tilladte poster for den specifikke kunde, og derefter DCount for at tælle i forvejen oprettede poster for samme kunde. Når resultatet af disse funktioner sammenlignes, må DCount ikke være > DLookup, idet der jo så oprettes flere poster for den specifikke kunde, end licensen tillader.
>> Mugs Den fortolkning mener jeg er forkert. Hvis det er til cykelhandleren han skal sælge sin database til. Så er det jo sjællent folk køber mere end 10 cykler. Så kan han resten af livet kører videre med en demo. Derimod er det reparsjon af cykler, Så kan man jo hurtigt komme op på 10 poster. ;o)
At sammenligne med en cykelhandler er forkert i dette tilfælde. Her er der tale om en licens, der jo kan ændres hen ad vejen f.eks afhængig af antal medarbejdere i firmaet. Det er jo meget normalt, at en kunde køber en licens til 15 brugere, for senere at ændre den til 20 brugere.
Og så er denne diskussion slut for mit vedkommende.
just a quick comment here! No matter WHAT code you use it will take more than that to stop me going in and removing the code! Other than some code to checkhow many records there are then you will need to distribute the program as an MDE file so that the code cant be tampered with.
Hvis det drejede sig om salg af licenser. Så er det jo en database på netværk, så skal den jo deles i en front-end og en bak-end. Hvor hver enkelt front-end har sit eget unike idnummer, der så skal testes for i bak-end, så kunden ikke bare tager kopi, af første front-end, og kører gratis på resten. Vh Henrik
Hvad forhindrer en smart bruger i at gå ind og rette i tabellen med max. antal tilladte records ? Ikke det faktum at filen distribueres som .mde Et fiktivt feltnavn i en eller anden tabel med et mærkeligt navn = gad vidst hvad den er til? lad mig prøve at rode med den.
Den eneste gangbare løsning på dette er efter min bedste overbevisning at lave noget der ligner det, som er lavet til Navision Attain. Her distribuerer man en krypteret licensfil med oplysninger om kunden, hvilke moduler han har adgang til og hvor mange records i nogle bestemte tabeller. Denne fil læses ved opstart af applikationen og man har de værdier man skal bruge. Denne løsning er ikke nem at lave. Der skal programmeres en masse og der er mange ting der skal tages i betragtning. Jeg har selv brugt metoden i en af mine egne professionelle applikationer, men da der indgår krypteringsmetoder, kan jeg ikke offentlig-gøre koden uden at kompromitere min 'sikkerhed'
>>hugopedersen Det system lyder meget spændene, har aldrig hørt om det før, og det er jo nok sådan en pro. løsning, der skal søges, Mit bud var også uden fast tabel, hvad angik registreringen. Men jeg regner ikke med at man kan få sådan et system for poient, der må man nok til lommerne. :o)
Systemet til Attain (det bruges vist også til andre Navision produkter) er meget smart. Jeg har aldrig hørt om nogen der har knækket det. Jeg prøver lige for sjov at smide filen til demo databasen til Attain 3.01 i halen af denne kommentar. Så kan du se hvordan det er lavet. De sidste underlige tegn er den alvorlige del hvor de krypterede koder ligger.
let > Du sendte mig en kopi af din db med min kode indlagt. Fik du dit problem løst?
Synes godt om
Ny brugerNybegynder
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.