Query resultaat weergeven in tekstvak

Status
Niet open voor verdere reacties.
Bedankt voor alle reacties op mijn vraag :)
Ik ben met beide oplossingen aan de slag gegaan. beide geven helaas nog problemen. Tardis, ik weet niet zo goed hoe ik de condities correct in het besturinselementbron zet. Heb je wellicht een voorbeeld waarmee ik kan werken?

Michel, Ik heb jouw code gecopy paste maar hij loopt nog niet helemaal. De DAO staat aan dat heb ik gecontroleerd. Access geeft mij een foutmelding in deze regel.
Set rst = dbs.OpenRecordset(strSQL1)

De bedoeling is dus dat het query resultaat in een tekstvak komt te staan wat niet door een gebruiker bewerkt mag worden. De gebruiker kiest een product en drukt op een knop daarna gaat de query lopen. Een andere query is de recordsource van het formulier. Deze hangt onder dezelfde knop als de andere query. De code onder de knop ziet er dus zo uit.

Private Sub Knop26_Click()
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 dbs As DAO.Database
Dim rst As DAO.Recordset

strTabel1 = "[InterneLeveringenBCNW]"
strSQL1 = "Select InterneLeveringenBCNW.Hoeveelheid As Aantal * From " & strTabel1 & vbCrLf _
& "WHERE(([Datum]>=#" & Me.Startdatum.Value & "# And [Datum]<=#" & Me.Einddatum.Value & "#) " _
& "And ([Product]=Me.ProductID_NW) " _
& "And ([LocatieID]<>2) " _
& "And ([LeverancierID]=7)) "

Set rst = dbs.OpenRecordset(strSQL1)
rst.MoveFirst
rst.Edit
sWaarde = rst.Fields("Aantal").Value
rst.Close
dbs.Close
Set rst = Nothing

Me.InternLev.Value= sWaarde
Me.Requery
End Sub

Bedankt voor alle hulp, ik ga dapper verder ;)
 
Ik heb in ieder geval de huidige code voor je opgeschoond; deze variant zou in ieder geval moeten werken.

Code:
Private Sub Knop26_Click()
Dim strTabel As String

	strTabel = "VoorraadNederweert"
	strSQL = "Select * From " & strTabel 
	Me.RecordSource = strSQL
	Me.Requery

End Sub

Private Sub Combo6_AfterUpdate()
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 dbs As DAO.Database
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.Hoeveelheid As Aantal * From " & strTabel1 & " " & vbCrLf _
	& "WHERE(([Datum] Between cDate(" & iBegin & ") And cDate(" & iEind & ")) " _
	& "And ([Product]=Me.ProductID_NW) " _
	& "And ([LocatieID]<>2) " _
	& "And ([LeverancierID]=7)) "

	Set rst = dbs.OpenRecordset(strSQL1)
	rst.MoveFirst
	sWaarde = rst.Fields("Aantal").Value 
	rst.Close
	dbs.Close
	Set rst = Nothing
Me.InternLev.Value= sWaarde

End Sub

De foutmelding zou kunnen ontstaan als de bibliotheken niet helemaal goed geladen zijn. Mijn ervaring is, dat de bibliotheek DAO 3.6 als laatste moet worden geladen, omdat ADO anders niet lekker werkt, met dus dit soort foutmeldingen. Als je naar Foutopsporing gaat, of rechtstreeks naar de VBA editor met <Alt>+<F11>, en je klikt op <Extra>, <Verwijzingen> dan zie je de geladen bibliotheken. Eventueel kun je met pijltjesknoppen DAO 3.6 verplaatsen, of zelfs uitzetten, zou ook moeten kunnen.

Het tekstvak kun je eenvoudig via de Eigenschappen uitzetten: <Ingeschakeld>=Nee, <Vergrendeld>=Ja.

Wat je volgens mij zou moeten doen, want dat doe ik zelf ook, is de code waarmee het produkt selecteert aan de keuzelijst hangen.Hij moet namelijk draaien als je een produkt kiest. Dan kan de code die nu op de knop zit naar het <Bij Laden> event van het formulier, en kan de knop volgens mij helemaal weg.

Michel
 

Bijlagen

  • Verwijzingen.jpg
    Verwijzingen.jpg
    63,2 KB · Weergaven: 33
Laatst bewerkt:
Hey Michel,

Bedankt voor jouw nieuwe code. Ik heb gedaan wat je zei wbt de volgorde van de DAO en de AOD. Ik krijg nu helaas een runtime error 91: object variable or With block variable not set.
Hij verwijst dan weer naar dit stukje code Set rst = dbs.OpenRecordset(strSQL1).
Ik heb zelf wat rondgegoogled en ik vroeg mij af of dit stukje code er ook niet in thuishoorden
Set dbs =Currentdb()
Set dbs =Nothing

Ik heb al weer wat lopen spelen ermee maar niets werkt. ik weet ook eerlijk gezegd niet zo goed wat het doet allemaal:(
 
de variabele 'dbs' is niet gedefinieerd. dus in code opnemen:
Set dbs=currentDb()
of
de variabele dbs niet gebruiken:
Set rst = CurrentDb.OpenRecordset(strSQL1)

In veel (de meeste) gevallen hoef je geen verwijzing naar ADO te zetten, omdat die niet gebruikt wordt. Dan hoef je ook niet expliciet naar DAO te definieren, dus
Dim rst As DAO.RecordSet wordt dan gewoon dim rst As RecordSet
 
Hey Harry,

ik krijg hem nog niet aan de praat. Ik heb ook weinig verstand van dit soort programmeren. De regel Set rst=currentdb.openrecordset(strSQL1) blijft problemen geven.
 
Bekijk het plaatje van OctaFish eens.

Zet "Microsoft DAO 3.6 Object Libary" boven "Microsoft ActiveX Data Object 2.8 library".

Of zet het vinkje van "Microsoft ActiveX Data Object 2.6 library" uit.
 
Heb je misschien andere bibliotheken geladen die niet specifiek noodzakelijk zijn voor Access? In mijn afbeelding heb ik alleen Office bibliotheken staan.
Je zou inderdaad de verwijzingen naar ADO weg kunnen halen, dus ook in de Dim statements. Zowiezo kan de verwijzing naar DAO 3.6 uit worden gezet, want die bibliotheek wordt hier niet aangesproken.

Een algemene vraag wat mij betreft: ik heb dus regelmatig gemerkt dat dit soort biblioteek problemen optreedt als de DAO 3.6 bibliotheek boven de ADO (2.1-2.8) bibliotheek staat, en dat de problemen verdwijnen als ik de DAO naar onderen verplaats. Ben ik de enige die daar last van heeft, of hebben anderen dezelfde ervaring?

Michel
 
ik heb dus regelmatig gemerkt dat dit soort biblioteek problemen optreedt als de DAO 3.6 bibliotheek boven de ADO (2.1-2.8) bibliotheek staat, en dat de problemen verdwijnen als ik de DAO naar onderen verplaats

Hetzelfde probleem heb ik op een ander forum gezien en toen ik de DAO boven de ADO plaatste was de foutmelding weg. Raar is dat.

Op onderstaande link. ADO verwijzing uitzetten voldoet ook.

http://office.webforums.nl/viewtopic.php?t=38377
 
Hoi Charles,

Het blijft een merkwaardig probleem, het laden van de bibliotheken. Waarschijnlijk is het inderdaad maar het beste om er slechts één te gebruiken, en de ander uit te zetten.
Michel
 
De wondere wereld van Access zullen we maar zeggen.
 
Ik heb de foutmelding weten te verhelpen. Ik heb echter weer een nieuwe foutmelding namelijk foutmelding 3141 er is een fout in het Select command. er is een leesteken verkeerd. Ik wordt wel weer naar de regel Set rst=OpenDatabase.Recordset(strSQL1) geleid als ik op fout opoeken klik:(
 
Ik heb de code via het direct scherm getest als ik daarin
? strSQL1 = "Select InterneLeveringenBCNW.Hoeveelheid As Aantal * From " & strTabel1 & " " & vbCrLf _
& "WHERE (([Datum] Between cDate(" & iBegin & ") And cDate(" & iEind & ")) " _
& "And ([Product]=Me.ProductID_NW) " _
& "And ([LocatieID]<>2) " _
& "And ([LeverancierID]=7)) "

invoer krijg ik als antwoord 'waar' dus ik neem aan dat dat goed zit.

De regel Set rst = CurrentDb.OpenRecordset(strSQL1) geeft mij echter de foutmelding, als ik hem in Direct test, de fout; Compileerfout verwacht: expressie.

Dit is de volledige code zoals ik hem nu gebruik:
Private Sub Knop26_Click()
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.Hoeveelheid As Aantal * From " & strTabel1 & " " & vbCrLf _
& "WHERE (([Datum] Between cDate(" & iBegin & ") And cDate(" & iEind & ")) " _
& "And ([Product]=Me.ProductID_NW) " _
& "And ([LocatieID]<>2) " _
& "And ([LeverancierID]=7)) "

Set rst = CurrentDb.OpenRecordset(strSQL1)
rst.MoveFirst
sWaarde = rst.Fields("Aantal").Value
rst.Close
dbs.Close
Set rst = Nothing

Me.InternLev.Value = sWaarde


End Sub
 
Heb je deze variant al geprobeerd?

Code:
sWaarde = CurrentDb.OpenRecordset(strSQL1).RecordCount
Me.InternLev.Value = sWaarde

Dat komt dan i.p.v.

Code:
Set rst = CurrentDb.OpenRecordset(strSQL1)
rst.MoveFirst
sWaarde = rst.Fields("Aantal").Value
rst.Close
dbs.Close
Me.InternLev.Value = sWaarde
Set rst = Nothing

Michel
 
Ik krijg hem niet aan de praat. Weer een 3141 foutmelding dat het Select statement niet klopt maar als ik naar VBA ga dan is deze regel geel:
sWaarde = CurrentDb.OpenRecordset(strSQL1).RecordCount

wellicht zijn er andere mogelijkheden om dit op te lossen.
In ieder geval hardstikke bedankt voor het meedenken :thumb:
 
Kun je een schermafbeelding maken van de verwijzingen in je bibliotheek? Ik wil graag kunnen uitsluiten dat daar het probleem zit.

Michel
 
Et Voila. Is het misschien een idee om ipv een tekstvak een subformulier te gebruiken??
 

Bijlagen

  • Doc1.doc
    48 KB · Weergaven: 28
Kun je misschien neerzetten wat je nu hebt? Het is nogal lastig om precies een vinger op de zere plek te leggen, zoals je al gemerkt hebt ;)
Aan de bibliotheken mankeert inderdaad niet zo heel veel; je zou hooguit de DAO bibliotheek uit kunnen zetten, en alle verwijzingen daarheen vervangen.
Dus Dim rst as Recordset, i.p.v. Dim rst as DAO.Recordset.

Maar het is handiger als we rechtstreeks in de db kunnen rommelen.
 
Is het wellicht mogelijk om jullie de database te mailen? ik heb er al een Winrar bestand van gemaakt.
 
Ik heb niet de hele topic gelezen, een weet ook niet precies waar de schoen knelt, maar ik denk dat in ieder geval ondestaand ook niet helemaal juist is (voor mijn gevoel, dus niet getest)

Select InterneLeveringenBCNW.Hoeveelheid As Aantal * From

Je zegt selecteer InterneLeveringenBCNW.Hoeveelheid en noem deze Aantal, vervolgens kom je met een *-tje.

Ik denk dat het moet zijn:
Select InterneLeveringenBCNW.Hoeveelheid As Aantal From. Dus zonder sterretje

OF

Select InterneLeveringenBCNW.Hoeveelheid As Aantal, InterneLeveringenBCNW.* From. met sterretje

Voor de rest, neem me niet kwalijk als ik er volledig naast zit :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan