samenvoegen met word

Status
Niet open voor verdere reacties.

wimvd

Gebruiker
Lid geworden
9 nov 2009
Berichten
25
Beste Helpmij'ers,

Ik wil het resultaat van een qry weergeven in een worddocument, via de bladwijzers.
Aangezien ik een leek ben met vba heb ik de code gebruikt die bij het boek ACCESS 2007
van Academic service geleverd zat. (MergeToWord)
Het enige verschil met het voorbeeld is dat ik mijn data uit een qry haal ipv uit een tabel.

Het voorbeeld werkte goed, maar als ik de code aanpas naar de eigenschappen van mijn database loopt het mis, al in de eerste regels:rolleyes:
Ik krijg de ingebouwde foutmelding (Invalid Costumer)

Kan er iemand vertellen wat er fout zit?

Code:
Private Sub pb_aanvanghuur_wordknop_Click()

' This method creates a new document in
' MS Word using Automation
  Dim rs As New ADODB.Recordset
  Dim sSQL As String
  Dim WordObj As Word.Application
  Dim iTemp As Integer
  
On Error Resume Next
  
  sSQL = "SELECT * FROM word_pb_aanvanghqry " _
    & "WHERE pbtbl.pbtbl_dossiernr = " _
    & "Forms!pbdetailfrm![dossiernr_txt]"

  rs.Open sSQL, CurrentProject.Connection
  
  If rs.EOF Then
    MsgBox "Invalid Costumer", vbOKOnly
    Exit Sub
  End If
  
  DoCmd.Hourglass True
  
  'Try to get a running instance of Word:
  Set WordObj = GetObject(, "Word.Application")
  If Err.Number <> 0 Then
    'An error is thrown if Word is not running,
    'so use CreateObject to start up Word:
    Set WordObj = CreateObject("Word.Application")
  End If
 
Je SQL statement levert geen resultaten op:
sSQL = "SELECT * FROM word_pb_aanvanghqry " _
& "WHERE pbtbl.pbtbl_dossiernr = " _
& "Forms!pbdetailfrm![dossiernr_txt]"


Zet onder deze regel even wat extra's: Debug.Print sSQL
Je kunt dan zien wat voor SQL statement daadwerkelijk gebruikt wordt.
Plak dat statement in een query en ga eens kijken wat er echt opgehaald wordt.
 
Er zitten waarschijnlijk twee fouten in je sql:
Fout 1: & "Forms!pbdetailfrm![dossiernr_txt]" moet zijn:
& Me.[dossiernr_txt]
dus zonder de aanhalingstekens, en bij voorkeur met Me i.p.v. de formuliernaam. Je verwijst niet naar tekst, maar naar een formulieropbject.

Tweede fout:
Als je filtert op een tekstveld, waar het naar uitziet als ik naar de veldnaam kijk, dan moet de filtering tussen quootjes staan:

sSQL = "SELECT * FROM word_pb_aanvanghqry " _
& "WHERE pbtbl.pbtbl_dossiernr = '" & Me.[dossiernr_txt] & "'"
 
Bedankt voor de snelle hulp!

Het lukt me niet de gegevens uit de query te halen, als ik de sql code (zoals voorgesteld) in een nieuwe query zet haalt hij de juist gegevens er wel uit.

Het lukt me wel als ik enkel volgende regel gebruik:

sSQL = "SELECT * FROM word_pb_aanvanghqry "

Maar dan staan gegevens van alle records door elkaar.

Als ik met de query de juiste gegevens opzoek, zodat ik maar 1 record over heb dan lukt het weer niet.

Ik heb het ook geprobeert met Me!...
Maar er zijn 2 formulieren open en waar het dossiernummer moet uitgehaald worden is niet actief, ik weet niet of dat dan mogelijk is ?

Het zijn de laatste loodjes, dan is mijn project af.
Ik heb mijn vrouw (voor wie de database bedoeld is) al verteld dat ze voor een flinke donatie richting Helpmij moet zorgen, zonder jullie was't me niet gelukt :thumb:
 
Ik weet niet of het slim is om de financiën over te laten aan vrouwvolk, maar dat is een heel andere discussie ;)
Uit je verhaal maak ik op dat de sql zijn gegevens niet haalt uit het formulier van waaruit je de knop het opgestart. Het formulier is wel open, zeg je, maar krijg je wel het goede record op beide formulieren? Is het tweede formulier een subformulier? En kun je misschien een voorbeeld posten, want als het wat ingewikkelder wordt, is dat wel zo makkelijk.
 
Ik weet niet of het slim is om de financiën over te laten aan vrouwvolk, maar dat is een heel andere discussie ;)
Uit je verhaal maak ik op dat de sql zijn gegevens niet haalt uit het formulier van waaruit je de knop het opgestart. Het formulier is wel open, zeg je, maar krijg je wel het goede record op beide formulieren? Is het tweede formulier een subformulier? En kun je misschien een voorbeeld posten, want als het wat ingewikkelder wordt, is dat wel zo makkelijk.

Op het advies uit je eerste zin zal ik niet veel moeten toevegen :D

Wat betreft de formulieren.
Er zijn er 2 open, op het (gesplitst) formulier waar het gewenste record in zichtbaar is
staat een knop (rapport keuze). Dan word het rapport keuzeformulier geopend, er staan enkel maar knoppen op met de link naar al de rapporten, dit is een gewoon formulier.
Maar ik zal werk maken van een voorbeeld zoals je vroeg.
 
Lijkt mij een goed plan! Als ik het zo zie, zou je met OpenArgs een eind moeten kunnen komen; hiermee geef je startopties mee aan een vervolgformulier, die je vervolgens weer kunt uitlezen en verder verwerken. Maar ik wacht op het voorbeeld!
 
Ok, ik ben er eindelijk met het voorbeeld.
Het probleem was dat het voorbeeld werkte :)
De functie waar het om gaat start op met de knop op het customer formulier.
Zodra ik records wil kiezen met een query is er een probleem.
Code:
  sSQL = "SELECT * FROM word_toevoegqry " _
    & "WHERE CustomerNumber = " _
    & Forms!Orders![CustomerNumber]

Wanneer ik de WHERE functie eraf laat
Code:
sSQL = "SELECT * FROM word_toevoegqry "
gaat het wel, maar dan staat het eerste record altijd weergegeven.
Heb ook al geprobeert met 2 query's, één die de gegevens verzameld en de andere die het resultaat van die eerste query laat zien. Maar dan krijg ik dezelfde ingebouwde foutmelding.
Hoe zou ik die Open Arg functie best kunnen gebruiken?

Alvast bedankt bij voorbaat!

MVG,

Wim
 

Bijlagen

Waarom weet ik niet, maar hij doet het!!!
Met volgende code:

Code:
    sSQL = "SELECT * FROM word_pb_aanvanghqry " _
    & "WHERE [pbtbl_dossiernr] = " _
    & [Forms]![pbdetailfrm]![dossiernr_txt]
 
Da's Mooi :thumb:
Ik zou er nog van maken:

sSQL = "SELECT * FROM word_pb_aanvanghqry " _
& "WHERE [pbtbl_dossiernr] = " & Me.[dossiernr_txt]

Dan ben je van het 'probleem' van de formulierverwijzing af. Overigens zou het benst ook niet kunnen werken; je veld verwijst op het oog naar een tekstveld, niet naar een getalveld...
Dus ik zou het zo verwachten (en maken):
& "WHERE [pbtbl_dossiernr] = '" & Me.[dossiernr_txt] & "'"
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan