Query resultaat weergeven in tekstvak

Status
Niet open voor verdere reacties.
Ik denk dat ik toch toe ben aan een niewe bril ;) De opmerking van Spiderman snijdt in ieder geval wel houdt; in het voorbeeld staat inderdaad een verdwaald asterixje.
Controleer dus in ieder geval eerst of die ook in de code staat, want die moet daar dus weg.

Michel
 
Laatst bewerkt:
Ik heb het asterix'je weggehaald. Ik krijg nu een andere foutmelding maar ik denk wel dat die daar weg moest. Ik krijg nu fout 3061 er zijn te weinig parameters verwachte aantal is vijf :shocked:
 
Hoi,

Ik gok op deze

De aanhalingstekens staat verkeerd
& "And ([Product]=Me.ProductID_NW) " _


Moet zijn
& "And ([Product]=" & Me.ProductID_NW & ") " _
 
Hey,

Ik krijg nog steeds dezelfde foutmelding het aantal verwachte parameters is wel gezakt naar vier :D
 
Nadat je me het voorbeeld hebt gestuurd, heb ik de volgende fouten gevonden.

Zet in de Query InterneLeveringenBCNW alle kolomen zichtbaar
Verander/ of voeg toe in de Query InterneLeveringenBCNW de kolom ProductID

Verander je strSQL1 naar

Code:
    strSQL1 = "Select InterneLeveringenBCNW.SomVanHoeveelheid As Aantal From " & strTabel1 & vbCrLf & "" _
    & "WHERE(([Datum] Between cDate(" & iBegin & ") And cDate(" & [COLOR="Red"]e[/COLOR]Eind & ")) " _
    & "And ([Product[COLOR="red"]ID[/COLOR]]=" & Me.ProductID_NW & ") " _
    & "And ([LocatieID]<>2) " _
    & "And ([LeverancierID]=7))"

Rood gedrukte waren fout
 
Hey Spiderman,

Hardstikke bedankt voor je hulp:thumb: Ik krijg geen foutmeldingen meer. Het tekstvak doet echter nog niet precies wat ik wil.
Als er bijvoorbeeld een interne levering van 400 is geweest en 1 van 300 geeft het tekstvak weer dat er 2 interne leveringen zijn geweest. Wat ik graag wil is dat het tekstvak de hoeveelheid weergeeft namelijk 700. Is dat mogelijk?
 
Ik denk dat je dit bedoeld

Code:
Private Sub Knop26_Click()
Dim strTabel As String
strTabel = "VoorraadNW"
strSQL = "Select * From " & strTabel & vbCrLf
Me.RecordSource = strSQL
Me.Requery

Dim strTabel1 As String
Dim strSQL1 As String
Dim sWaarde As String
Dim sBeginDatum As Date, sEindDatum As Date
Dim iBegin As Double, iEind As Double
Dim rst As DAO.Recordset


    strTabel1 = "[InterneLeveringenBCNW]"
    sBeginDatum = CDate(Me.Startdatum.Value)
    sEindDatum = CDate(Me.Einddatum.Value)
    iBegin = CDbl(sBeginDatum)
    eEind = CDbl(sEindDatum)

    strSQL1 = "Select InterneLeveringenBCNW.SomVanHoeveelheid As Aantal From " & strTabel1 _
    & " WHERE(([Datum] Between cDate(" & iBegin & ") And cDate(" & eEind & ")) " _
    & "And ([ProductID]=" & Me.ProductID_NW & ") " _
    & "And ([LocatieID]<>2) " _
    & "And ([LeverancierID]=7)) "
    
   [COLOR="Red"]Set rst = CurrentDb.OpenRecordset(strSQL1)   
If rst.RecordCount > 0 Then
    Me.InternLev.Value = rst.Fields("Aantal").Value
Else
    Me.InternLev.Value = 0
End If
[/COLOR]    
End Sub
 
Spiderman je ben echt een superheld:thumb:
Hij doet het bijna helemaal, ik heb alleen nog iets heel vreemds, hij pakt data niet die ik vandaag heb ingevuld. Ik heb al geprobeerd de datum naar morgen te zetten maar daar ligt het niet aan. Ook staan deze leveringen gewoon in de query InterneLeveringen.
Zou het misschien aan het feit kunnen liggen dat ze in de query InterneLeveringen op Datum worden gegrouped? Ik heb hetzelfde probleem in een ander topic wat ik vandaag heb geopenend.
 
Mag ik ook nog een bijdrage leveren ;)

Er komt nog een stukje code bij:

Code:
strSQL = "SELECT Datum, LeverancierID, ProductID, Hoeveelheid " & vbCrLf _
    & "FROM AlleOrders " & vbCrLf _
    & "WHERE(([Datum] Between cDate(" & iBegin & ") And cDate(" & iEind & ")) " _
    & "AND (LeverancierID=" & Me.[Leverancier_NW] & ") " _
    & "AND (ProductID=" & Me.[ProductID_NW] & ") " _
    & "AND (LocatieID=2));"

Me.RecordSource = strSQL
Me.Requery

Hiermee stel je de records van het formulier in op de datums die je selecteert. De datumselectie was nu alleen bedoeld voor de interne leveranties.

Michel
 
Hey Michel,

waar moet ik de code plakken? Ik heb nu deze code:
Code:
Dim strTabel As String
strTabel = "VoorraadNederweert"
strSQL = "Select * From " & strTabel & vbCrLf
Me.RecordSource = strSQL
Me.Requery

Dim strTabel1 As String
Dim strSQL1 As String
Dim sWaarde As String
Dim sBeginDatum As Date, sEindDatum As Date
Dim iBegin As Double, iEind As Double
Dim rst As DAO.Recordset

    strTabel1 = "[InterneLeveringenBCNW]"
    sBeginDatum = CDate(Me.Startdatum.Value)
    sEindDatum = CDate(Me.Einddatum.Value)
    iBegin = CDbl(sBeginDatum)
    eEind = CDbl(sEindDatum)

    strSQL1 = "Select InterneLeveringenBCNW.SomVanHoeveelheid As Aantal From " & strTabel1 & " " & vbCrLf _
    & "WHERE (([Datum] Between cDate(" & iBegin & ") And cDate(" & eEind & ")) " _
    & "And ([ProductID]=" & Me.ProductID_NW & ") " _
    & "And ([LocatieID]<>2) " _
    & "And ([LeverancierID]=7)) "
   
   Set rst = CurrentDb.OpenRecordset(strSQL1)
If rst.RecordCount > 0 Then
    Me.InternLev.Value = rst.Fields("Aantal").Value
Else
    Me.InternLev.Value = 0
End If

Waarschijnlijk gaat er nog meer code bijkomen, ik heb nu een tekstvak met alles wat er intern naar anderen wordt gelevert er moet ook nog een tekstvak komen met wat anderen intern naar deze leveren maar goed eerst dit voor elkaar maken voordat ik me daaraan ga wagen:D
 
Het maakt niet zoveel uit waar je de code plakt, want het is een zelfstandig onderdeeltje. Ik heb hem onderaan gezet.
 
Nu laat hij de leveranties niet zien. Ik denk dat de nieuwe code conflicten geeft met

Code:
Dim strTabel As String
strTabel = "VoorraadNederweert"
strSQL = "Select * From " & strTabel & vbCrLf
Me.RecordSource = strSQL
Me.Requery

Ik heb strSQL als strSQL2 genoemd en een extra spatie naar WHERE gezet, het heeft niet mogen baten :(
 
Laatst bewerkt:
Ik ben wat aan het spelen met de oplossing vanuit mijn vorige vraag. Ik heb nu deze SQL voor interne Leveringen:

Code:
SELECT Sum(AlleOrders.Hoeveelheid) AS SomVanHoeveelheid, AlleOrders.Datum, Bedrijfsonderdelen.Bedrijfsonderdeel, Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID
FROM Leverancier INNER JOIN (Bedrijfsonderdelen INNER JOIN (Producten INNER JOIN AlleOrders ON Producten.ProductID = AlleOrders.ProductID) ON Bedrijfsonderdelen.LocatieID = AlleOrders.LocatieID) ON Leverancier.LeverancierID = AlleOrders.LeverancierID
GROUP BY AlleOrders.Datum, Bedrijfsonderdelen.Bedrijfsonderdeel, Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID
HAVING (((AlleOrders.Datum) Between [forms]![VoorraadBCNederweert].[Startdatum] And [forms]![VoorraadBCNederweert].[Einddatum]));

De VBA op het formulier is nu
Code:
Dim strTabel As String
strTabel = "VoorraadNederweert"
strSQL = "Select * From " & strTabel & vbCrLf
Me.RecordSource = strSQL
Me.Requery

Dim strTabel1 As String
Dim strSQL1 As String
Dim sWaarde As String

Dim rst As DAO.Recordset

    strTabel1 = "[InterneLeveringenBCNW]"
   
    strSQL1 = "Select InterneLeveringenBCNW.SomVanHoeveelheid As Aantal From " & strTabel1 & " " & vbCrLf _
    & "WHERE (([ProductID]=" & Me.ProductID_NW & ") " _
    & "And ([LocatieID]<>2) " _
    & "And ([LeverancierID]=7)) "
   
   Set rst = CurrentDb.OpenRecordset(strSQL1)
If rst.RecordCount > 0 Then
    Me.InternLev.Value = rst.Fields("Aantal").Value
Else
    Me.InternLev.Value = 0
End If

Dim strTabel2 As String
Dim strSQL2 As String
Dim sWaarde1 As String
Dim rst1 As DAO.Recordset

    strTabel2 = "[InterneLeveringenBCNW]"
    
    strSQL2 = "Select InterneLeveringenBCNW.SomVanHoeveelheid As Aantal From " & strTabel1 & " " & vbCrLf _
    & "WHERE (([ProductID]=" & Me.ProductID_NW & ") " _
    & "And ([LocatieID]=2) " _
    & "And ([LeverancierID] Between 5 And 9))"
   
  Set rst = CurrentDb.OpenRecordset(strSQL2)
If rst.RecordCount > 0 Then
    Me.InternOnt.Value = rst.Fields("Aantal").Value
Else
    Me.InternOnt.Value = 0
End If

Echter deze loopt niet, ik heb weer hetzelfde probleem als eerder namelijk dat die weer over parameters loopt te zeuren:rolleyes:
Iemand enige suggesties???
 
Spiderman heeft de volgende code bedacht die mijn problemen opgelost heeft.

Code:
Dim strTabel As String
Dim strSQL As String
strTabel = "VoorraadNederweert"
strSQL = "Select * From " & strTabel & vbCrLf _
& "Where ((([Datum])>=#" & Me.Startdatum.Value & "# And ([Datum])<=#" & Me.Einddatum.Value & "#)" _
& "And  ([LeverancierID]=" & Me.Leverancier_NW & ")" _
& "And ([ProductID]=" & Me.ProductID_NW & "));"
Me.RecordSource = strSQL
Me.Requery
Dim strSQL1 As String
Dim strSQL2 As String
Dim sBeginDatum As Date, sEindDatum As Date
Dim iBegin As Double, eEind As Double
Dim rst As DAO.Recordset
    sBeginDatum = CDate(Me.Startdatum.Value)
    sEindDatum = CDate(Me.Einddatum.Value)
    iBegin = CDbl(sBeginDatum)
    eEind = CDbl(sEindDatum)
    strSQL1 = "SELECT Sum(AlleOrders.Hoeveelheid) AS Aantal, Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID " & _
              "FROM Leverancier INNER JOIN (Bedrijfsonderdelen INNER JOIN (Producten INNER JOIN AlleOrders ON Producten.ProductID = AlleOrders.ProductID) ON Bedrijfsonderdelen.LocatieID = AlleOrders.LocatieID) ON Leverancier.LeverancierID = AlleOrders.LeverancierID " & _
              "WHERE ((AlleOrders.Datum Between cDate(" & iBegin & ") And cDate(" & eEind & ")) And (AlleOrders.ProductID=" & Me.ProductID_NW & ") And (AlleOrders.LocatieID<>2) And (AlleOrders.LeverancierID=7)) " & _
              "GROUP BY Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID;"
   
    Set rst = CurrentDb.OpenRecordset(strSQL1)
    If rst.RecordCount > 0 Then
        Me.InternLev.Value = rst.Fields("Aantal").Value
    Else
        Me.InternLev.Value = 0
    End If
    
    strSQL2 = "SELECT Sum(AlleOrders.Hoeveelheid) AS Aantal, Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID " & _
              "FROM Leverancier INNER JOIN (Bedrijfsonderdelen INNER JOIN (Producten INNER JOIN AlleOrders ON Producten.ProductID = AlleOrders.ProductID) ON Bedrijfsonderdelen.LocatieID = AlleOrders.LocatieID) ON Leverancier.LeverancierID = AlleOrders.LeverancierID " & _
              "WHERE ((AlleOrders.Datum Between cDate(" & iBegin & ") And cDate(" & eEind & ")) And (AlleOrders.ProductID=" & Me.ProductID_NW & ") And (AlleOrders.LocatieID=2) And (AlleOrders.LeverancierID  Between 5 And 9)) " & _
              "GROUP BY Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID;"
   
    Set rst = CurrentDb.OpenRecordset(strSQL2)
    If rst.RecordCount > 0 Then
        Me.InternOnt.Value = rst.Fields("Aantal").Value
    Else
        Me.InternOnt.Value = 0
    End If
 
Nadat de code altijd goed heeft gewerkt doet hij het opeens niet meer. Ik krijg geen foutmelding maar hij geeft geen records weer terwijl ik zeker weet dat hij records moet weergeven (ik heb ze net zelf ingevuld). Nu heb ik de database meerdere malen gekopieerd en de datbases andere namen gegeven, kan dat de oorzaak zijn van het feit dat de code niet meer loopt?
 
Om even wat duidelijker te zijn, dit stuk van de code werkt om de een of andere reden niet meer:

Code:
Dim strTabel As String
Dim strSQL As String
strTabel = "VoorraadNederweert"
strSQL = "Select * From " & strTabel & vbCrLf _
& "Where ((([Datum])>=#" & Me.Startdatum.Value & "# And ([Datum])<=#" & Me.Einddatum.Value & "#)" _
& "And  ([LeverancierID]=" & Me.Leverancier_NW & ")" _
& "And ([ProductID]=" & Me.ProductID_NW & "));"
Me.RecordSource = strSQL
Me.Requery
 
Komt waarschijnlijk omdat je in dit deel van de procedure de datums niet omrekent:

Code:
sBeginDatum = CDate(Me.Startdatum.Value)
sEindDatum = CDate(Me.Einddatum.Value)
iBegin = CDbl(sBeginDatum)
iEind = CDbl(sEindDatum)


Dim strTabel As String
Dim strSQL As String
strTabel = "VoorraadNederweert"
strSQL = "Select * From " & strTabel & vbCrLf _
& "Where ((([Datum])>=CDate(" & iBegin & ") And [Datum]<=CDate(" & iEind & "))" _
& "And  ([LeverancierID]=" & Me.Leverancier_NW & ")" _
& "And ([ProductID]=" & Me.ProductID_NW & "));"
Me.RecordSource = strSQL
Me.Requery

Opm: ik heb de variabele eEind hernoemd naar iEind. Want dat was ook de bedoelde naam... (Effe zoeken en vervangen...)
 
Hey Michel bedankt voor je snelle reactie, dus dit zou jouw volledige code worden:

Code:
sBeginDatum = CDate(Me.Startdatum.Value)
sEindDatum = CDate(Me.Einddatum.Value)
iBegin = CDbl(sBeginDatum)
iEind = CDbl(sEindDatum)


Dim strTabel As String
Dim strSQL As String
strTabel = "VoorraadNederweert"
strSQL = "Select * From " & strTabel & vbCrLf _
& "Where ((([Datum])>=CDate(" & iBegin & ") And [Datum]<=CDate(" & iEind & "))" _
& "And  ([LeverancierID]=" & Me.Leverancier_NW & ")" _
& "And ([ProductID]=" & Me.ProductID_NW & "));"
Me.RecordSource = strSQL
Me.Requery

Dim strSQL1 As String
Dim strSQL2 As String
[COLOR="DarkOrange"]Dim sBeginDatum As Date, sEindDatum As Date
Dim iBegin As Double, eEind As Double[/COLOR]Dim rst As DAO.Recordset
    [COLOR="darkorange"]sBeginDatum = CDate(Me.Startdatum.Value)
    sEindDatum = CDate(Me.Einddatum.Value)
    iBegin = CDbl(sBeginDatum)
    eEind = CDbl(sEindDatum)

[/COLOR]
    strSQL1 = "SELECT Sum(AlleOrders.Hoeveelheid) AS Aantal, Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID " & _
              "FROM Leverancier INNER JOIN (Bedrijfsonderdelen INNER JOIN (Producten INNER JOIN AlleOrders ON Producten.ProductID = AlleOrders.ProductID) ON Bedrijfsonderdelen.LocatieID = AlleOrders.LocatieID) ON Leverancier.LeverancierID = AlleOrders.LeverancierID " & _
              "WHERE ((AlleOrders.Datum Between cDate(" & iBegin & ") And cDate(" & eEind & ")) And (AlleOrders.ProductID=" & Me.ProductID_NW & ") And (AlleOrders.LocatieID<>2) And (AlleOrders.LeverancierID=7)) " & _
              "GROUP BY Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID;"
   
    Set rst = CurrentDb.OpenRecordset(strSQL1)
    If rst.RecordCount > 0 Then
        Me.InternLev.Value = rst.Fields("Aantal").Value
    Else
        Me.InternLev.Value = 0
    End If
    
    strSQL2 = "SELECT Sum(AlleOrders.Hoeveelheid) AS Aantal, Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID " & _
              "FROM Leverancier INNER JOIN (Bedrijfsonderdelen INNER JOIN (Producten INNER JOIN AlleOrders ON Producten.ProductID = AlleOrders.ProductID) ON Bedrijfsonderdelen.LocatieID = AlleOrders.LocatieID) ON Leverancier.LeverancierID = AlleOrders.LeverancierID " & _
              "WHERE ((AlleOrders.Datum Between cDate(" & iBegin & ") And cDate(" & eEind & ")) And (AlleOrders.ProductID=" & Me.ProductID_NW & ") And (AlleOrders.LocatieID=2) And (AlleOrders.LeverancierID  Between 5 And 9)) " & _
              "GROUP BY Leverancier.Leverancier, Producten.Product, AlleOrders.LocatieID, AlleOrders.LeverancierID, AlleOrders.ProductID;"
   
    Set rst = CurrentDb.OpenRecordset(strSQL2)
    If rst.RecordCount > 0 Then
        Me.InternOnt.Value = rst.Fields("Aantal").Value
    Else
        Me.InternOnt.Value = 0
    End If

Of moet ik de code in het oranje weglaten??
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan