higaMedlem sedan aug. 2000359 inlägg Jag håller på och gör en databas för matinköp, och har kört fast igen.
Det fungerar nu att när jag valt affär och kategori i ett formulär så visas bara dom matvaror som jag har registrerat för vald affär och kategori.
Nu till det aktuella problemet: Hur gör jag om jag vill att textrutan "dd_apris" ska få det pris som motsvaras av vald matvara i dd.matvara efter uppdatering?
Priset ligger i Matvaror.Pris, matvaran ligger i Matvaror.Matvara
Koden för formuläret ser ut så här:
Private Sub dd_affär_AfterUpdate()
Dim strSQL As String
strSQL = "SELECT Matvara FROM Matvaror WHERE Affär = '" & Me.dd_affär & "' AND Kategori = '" & Me.dd_kategori & "'"
Me.dd_matvara.RowSource = strSQL
Me.dd_matvara.Requery
End Sub
Public Sub dd_kategori_AfterUpdate()
Dim strSQL As String
strSQL = "SELECT Matvara FROM Matvaror WHERE Affär = '" & Me.dd_affär & "' AND Kategori = '" & Me.dd_kategori & "'"
Me.dd_matvara.RowSource = strSQL
Me.dd_matvara.Requery
End Sub
Private Sub dd_matvara_AfterUpdate()
End Sub
Antagligen behöver jag ha något i dd_matvara_AfterUpdate(), för att få fram a-priset, men vad?
Mvh Lukas
Engine^Medlem sedan dec. 20003 887 inlägg Du behöver välja ut priset på varan...
SELECT Pris FROM Matvaror WHERE Affär = '" & Me.dd_affär & "' AND Matvara = '" & Me.dd_matvara & "'"
Och den lägger du i dd_matvara_AfterUpdate(), ja.
higaMedlem sedan aug. 2000359 inlägg Kan inte VB något vidare än, så jag hajar inte riktigt hur jag ska få textrutan "tf_apris" att tilldelas värdet från uttrycket.
Prövade att skriva
Private Sub dd_matvara_AfterUpdate()
Dim strSQL As String
strSQL = "SELECT Pris FROM Matvaror WHERE Affär = '" & Me.dd_affär & "' AND Matvara = '" & Me.dd_matvara & "'"
Me.tf_apris.Value = strSQL
End Sub
och jag får "körfel 2113 värdet är ej giltigt för detta fält" när jag öppnar formuläret och väljer matvara.
Mvh Lukas
Engine^Medlem sedan dec. 20003 887 inlägg M'kay... din strSQL-variabel är en fråga som ställs till databasen. Den plockar ut värden baserat på vad du ger den...
Private Sub dd_matvara_AfterUpdate()
Dim strSQL As String
strSQL = "SELECT Pris FROM Matvaror WHERE Affär = '" & Me.dd_affär & "' AND Matvara = '" & Me.dd_matvara & "'"
Me.tf_apris = CurrentProject.Connection.Execute(strSQL, , adCmdText)(0)
End Sub
Så kan du nog skriva för att få ut priset, men då krävs det att det inte är några tomma värden i någon av dropdown-listorna. Iofs är en sådan kontroll enkel att lägga till
Private Sub dd_matvara_AfterUpdate()
Dim strSQL As String
If Not (Me.dd_matvara = vbNullString Or Me.dd_affär = vbNullString Or IsNull(Me.dd_matvara) Or IsNull(Me.dd_affär)) Then
strSQL = "SELECT Pris FROM Matvaror WHERE Affär = '" & Me.dd_affär & "' AND Matvara = '" & Me.dd_matvara & "'"
Me.tf_apris = CurrentProject.Connection.Execute(strSQL, , adCmdText)(0)
End If
End Sub
Sedan bör du även akta dig för att inte försöka visa data som inte finns, så en slutlig funktion för att göra det du vill skulle kunna se ut så här.
Private Sub dd_matvara_AfterUpdate()
Dim adoRS As ADODB.RecordSet
Dim strSQL As String
If Not (Me.dd_matvara = vbNullString Or Me.dd_affär = vbNullString Or IsNull(Me.dd_matvara) Or IsNull(Me.dd_affär)) Then
strSQL = "SELECT Pris FROM Matvaror WHERE Affär = '" & Me.dd_affär & "' AND Matvara = '" & Me.dd_matvara & "'"
Set adoRS = New ADODB.RecordSet
adoRS.Open strSQL, CurrentProject.Connection
If Not adoRS.EOF Then
Me.tf_apris = adoRS(0)
End If
adoRS.Close
End If
Set adoRS = Nothing
End Sub
Det är bara att testa sig fram, så kommer det en gubbe med ljus och lykta när du minst anar det ;)
higaMedlem sedan aug. 2000359 inlägg Stort tack! Nu fungerar det perfa :)