webForumDet fria alternativet

2 svar · 220 visningar · startad av gundeman

gundemanMedlem sedan jan. 200167 inlägg
#1

Jag håller på med ett program som skall registrera ett lager. Man skall både kunna lägga till i lagret genom inköp och tabort genom försäljning. När du registrerar ett inköp läggs datum, sort, antal kg och utbetalt in i lagertab. När du sedan skall sälja en vara så skall programet ta bort den vara som stämmer in på beställningen (sort), den varan med äldst inköpsdatum skall alltid tas bort först. Mitt program funkar utom på en punkt, företaget kan ha flera köptillfällen på samma vara och samma dag. Som det är nu så tar programet bort alla där datumet och varan matchar.
Så om jag först köper in 5 kg tomater och sedan samma dag ytterligare 5. Sedan får jag en beställning på 5kg tomater, då skall ju programet inte ta bort båda posterna.

Här följer min kod.

Set tabell = New ADODB.Recordset
    Dim vikt As Integer
    vikt = CInt(Text6.Text)
    Dim fortsätt As Boolean
    fortsätt = True
    Dim datum As Date
    Do While fortsätt
    tabell.Open "select min(datum) from lagertab where sort = '" & Text3.Text & "'", frmMain.databas
    datum = tabell(0)
    tabell.Close
    tabell.Open "select * from lagertab where sort = '" & Text3.Text & "' and datum = #" & datum & "#", frmMain.databas
    If vikt >= tabell("kg") Then
    vikt = vikt - tabell("kg")
    tabell.Close
    tabell.Open "delete from Lagertab where sort = '" & Text3.Text & "' and datum = #" & datum & "#", frmMain.databas
    Else
    tabell.Close
    tabell.Open " update lagertab set kg=kg- " & vikt & " where sort = '" & Text3.Text & "' and datum = #" & datum & "#", frmMain.databas
    fortsätt = False
    End If
    Loop

Mycket tacksam för hjälp

UlfTMedlem sedan maj 20018 027 inlägg
#2

Ditt problem är att du identifierar köptillfällen med datum och vara. Och detta är ingen unik identifierare. Du bör nog allvarligt gå igenom hela databasdesignen och se till att du kan hitta unika identifierare till det som du vill identifiera unikt. Lägg gärna till "id-nummer" i tabellerna som du kan låta vara unika. Sedan refererar du alla tabeller till varandra.

Mer hjälp orkar jag inte ge eftersom det ser ut som om det är en ganska så total ommodellering av databasen som du måste göra.

När jag tittar på din kod, ser det ut som om du bara använder en tabell, stämmer det? I så fall är det mycket du har kvar att göra i form av normaliseringar osv. Man skulle kunna tänka sig att det är vettigt att, förutom lagertabellen, ha en tabell för köptillfällen tex. Det går säkert att hitta ytterliggare en drös tabeller till som du behöver.

gundemanMedlem sedan jan. 200167 inlägg
#3

Jag har faktiskt både en tabell för inköp och en för försäljning, dessutom har jag ett lagerid som är unikt för lagertab.
Jag måste ha en lagertab och den skall uppdateras direkt som ett inköp/försäljning sker, därför tyckte jag att det var smidigast att göra så där. Jag har en massa andra tabeller också men jag tog bara med det som jag tyckte var vässentligt.

Jag vet att det skall gå att fixa det som jag vill med små modifieringar men jag vet inte hur.

125 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)