02. marts 2003 - 18:25Der er
10 kommentarer og 1 løsning
Produktdatabse
Kan nogle hjælpe mig med en simpelt lille database ??? I databasen skal man kunne oprette produkter som består af flere dele... Når man oprettet et produkt skal man kunne klikke på de dele man vil have med i produktet.
VIGTIGT
Hvis man opdaterer nogle af delene (retter stavefejl etc.) så skal det blive rettet på produkterne.
Hvis den blot er til dig selv, aldrig skal på nettet og ikke kommer til at indeholde over ca. 500 poster, så kan du nøjes med at oprette én tabel. Ellers skal du nok skille den ud i flere tabeller ...
Du skal bruge 2 tabeller. En med navne på dele og en med IdNr(Autonummerering). I en anden tabel gemmes Produkt og hvem der har lavet det.
Delene vælges i en Kombinationsboks, bundet til IdNr.
Efter hvert valg gemmes IdNr som tekst. F.eks.med
Dim Nr as Long Dim Text as String
Nr = [Kombiboks] Text = Text & Right("0000" & CLng(Nr),4)
Når produktet er færdigt gemmes Text i Produktabellen og variablen Text nullestilles med Text = "".
Produktet kan f.eks.genskabes med
Dim Nr as Long Dim AntalDele as Long Dim i AS LONG Dim Text AS String Dim Produkt as String Dim Deltext as String
AntalDele = Len(Text)/4 Produkt = ""
For i = 0 to AntalDele - 1 Nr = Mid(Text,i + 4,4) ' navnet på delen(Deltext) hentes med DLookUp ved hjælp af Nr Produkt = Produkt & Deltext & vbCrLf ' med vbCrLf får hver del en linje for sig next i
I eksemplet er der plads til 63 dele i et produkt, hvis det skal gemmes i et almindeligt tekstfelt, og IdNr må aldrig overstige 9999.
Har nu lavet en testbase (Access2000) , som indeholder:
TABELLER: DELE, med felterne DID(Autonummerering) DELNAVN(Tekst) PRODUKTER, med felterne PID(Autonummerering) PRODUKTNAVN(Tekst) PRODUKT(Tekst) VALGTAF(Tekst)
FORMULAR: VISPRODUKT Kombinationsboks, DELVALG med felterne DID og DELNAVN(bundet kolonne) Kombinationsboks, PRODUKTVALG med felterne PID(bundet kolonne) , PRODUKTNAVN, PRODUKT og VALGTAF Tekstboks, PROTEXT til PRODUKTNAVN (ubundet - synlig) Tekstboks, NAVNFELT til VALGTAF (ubundet - synlig) Tekstboks, PRODUKTNAVN bundet til PRODUKTNAVN (ikke synlig) Tekstboks, PRODUKT bundet til PRODUKT (ikke synlig) Tekstboks, VALGTAF bundet til VALGTAF (ikke synlig) Tekstboks, NYTEXT (ubundet - synlig) Tekstboks, PRODUKTTEXT (ubundet - synlig) Etiket, DVALG (kun denne etiket bruges i koden) Knap, NYT_KNAP Knap, GEM_KNAP Knap, AFSLUT_KNAP
MACRO: autoexec, med linjerne KørKommando\SkjulVindue, ÅbnFormular\VISPRODUKT, Maksimer --------------------------------------------------------------------------------------------------------------------------- I formularen ser koden således ud: Dim Antal As Long Dim i As Long Dim ProText As String Dim Nr As Long Dim Text As String Dim Deltext As String Dim PValg As Boolean Dim PText As String Dim Test As Long
Private Sub AFSLUT_KNAP_Click() DoCmd.Quit End Sub
Private Sub DELVALG_AfterUpdate() If PValg = True Then If Len(PText) = 252 Then MsgBox " Der er ikke plads til flere dele" [DELVALG] = Null Exit Sub End If
Test = InStr(PText, Right("0000" & CLng([DELVALG]), 4)) If Test > 0 Then MsgBox "Denne del er allerede brugt" [DELVALG] = Null Exit Sub End If End If
Private Sub Form_Open(Cancel As Integer) PValg = False [DELVALG].Visible = False [DVALG].Visible = False [PRODUKTVALG].SetFocus End Sub
Private Sub GEM_KNAP_Click() If IsNull([NAVNFELT]) = True Then MsgBox "Bruger ikke valgt" [NAVNFELT].SetFocus Exit Sub End If If IsNull([PROFELT]) = True Then MsgBox "Produktnavn ikke valgt" [PROFELT].SetFocus Exit Sub End If
If Len(PText) > 0 Then DoCmd.GoToRecord , , acNewRec [PRODUKT] = PText [PRODUKTNAVN] = [PROFELT] [VALGTAF] = [NAVNFELT] DoCmd.RunCommand acCmdSaveRecord [PRODUKTVALG].Requery [NYTEXT] = Null [PROFELT] = Null [NAVNFELT] = Null PValg = False [DELVALG].Visible = False [DVALG].Visible = False End If End Sub
Private Sub NYT_KNAP_Click() PValg = True [DELVALG].Visible = True [DVALG].Visible = True [NYTEXT] = Null [NAVNFELT] = Null [PROFELT] = Null [PRODUKTTEXT] = Null PText = "" End Sub
Private Sub PRODUKTTEXT_GotFocus() [PRODUKTVALG].SetFocus End Sub
Private Sub PRODUKTVALG_AfterUpdate() [NAVNFELT] = [PRODUKTVALG].Column(3) [PROFELT] = [PRODUKTVALG].Column(1)
Text = "" Deltext = "" ProText = [PRODUKTVALG].Column(2) Antal = Len(ProText) / 4 For i = 0 To Antal - 1 Nr = Val(Mid(ProText, 1 + 4 * i, 4)) Deltext = DLookup("[DELNAVN]", "DELE", "DID = " & CLng(Nr)) Text = Text & " " & Deltext & vbCrLf Next i
[PRODUKTTEXT] = Text [PRODUKTVALG] = Null End Sub
--------------------------------------------------------------------------------------------------------------------------- Når du skal rette i delene kan du enten skrive direkte i tabellen, lave en selvstændig formular, eller indarbejde denne rutine i hovedformularen.
Hvis du selv bruger Access2000 og lægger din e-mailadresse her, vil jeg gerne sende testbasen til dig.
Den er bare helt super tak skal du have her er dine fortjente point
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.