27. januar 2011 - 16:18Der er
8 kommentarer og 1 løsning
Opslag i prismatrix finde interval i Access
Hej Eksperter,
Jeg har brug for en funktion der kan finde ud af hvilket interval en given mængde hører til i. Situationen er den at der er forskellige priser ved forskellige mængder, fx.: Mængde Pris 0 - 10 10 11 - 20 8 21 - 30 5
Er mængden = 3, er prisen 10. Er mængden = 3, er prisen 10.
Problemet er at en mængden på 12,13,14 osv. vil give mig prisen på 5 istedet for den jeg er ude efter. Jeg ved at ">=" er et problem her. Jeg har også forsøgt med "DFirst", men også uden held.
Excels "LOPSLAG"s funktion klarer ærterne: Løsning i Excel: =LOPSLAG([opslagsværdi];[dataområde];[kollonne];SAND)
Hvordan får jeg rturneret den rigtige pris i Access?
Du skal have en tabel med pris og max antal Altså f.eks. prisen 10 og max antal 10 Så laver du en funktion der slår op i tabellen og finder det første antal der er større eller lig med det antal du vil finde prisen for. Så burde du få den rigtige pris.
Giv mig lige 1 halv time så skal jeg lige lave en test
Public Function fhpUnitPrice(intAntal As Integer) As Double ' ----------------------------------------------------------------------------------- ' Purpose : Finder pris ' Parameters : ' Returns : Double ' Created : 27-01-2011 ' Modified : ' Remarks : ' ----------------------------------------------------------------------------------- On Error GoTo Error_fhpUnitPrice Const TableName As String = "Table1" Dim strSQL As String Dim dblResult As Double Dim rst As New ADODB.Recordset strSQL = "SELECT * FROM " & TableName & " WHERE (fldAntal >= " & intAntal & ") ORDER BY fldAntal;" rst.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockOptimistic rst.MoveFirst
dblResult = 0 dblResult = Nz(rst!fldPris, 0)
rst.Close Set rst = Nothing
Exit_fhpUnitPrice: fhpUnitPrice = dblResult Exit Function
Error_fhpUnitPrice: dblResult = 0 Select Case Err.Number Case 3021 Case 2501 Case Is < 0 Case Else MsgBox Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error in procedure 'fhpUnitPrice'" End Select Resume Exit_fhpUnitPrice
Det er fordi du mangler en reference til Microsoft ActiveX Data Objects Der kan godt være flere verioner på din maskine, men tag den nyeste. Det er fordi jeg altid bruger ADODB.Recordset i stedet for den gamle DAO metode ADODB.Recordset virker nemlig også direkte på MS SQL hvis du laver din db som et ADP projekt.
Tak, jeg måtte lige google lidt på det. Men jeg fandt frem til at fra VB menuen valgte jeg: Tools > References Herefter fandt jeg "Microsoft ActiveX Data Objects 2.8 Library" og "Microsoft ActiveX Data Objects REcordset 2.8 Library" i listen og satte flueben ved dem.
Hugo, smider du lige et svar - for det virker bare helt perfekt ;O)
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.