Print / opslaan selectie lukt niet foutcode 7769

Status
Niet open voor verdere reacties.

gangstalaz

Gebruiker
Lid geworden
13 sep 2010
Berichten
131
Hallo,

Ik werk met access 2003. Ik heb een formulierlijst waarin ik verschillende leveranciers met verschillende artikelen heb staan. database print.jpg
Wanneer ik een lijst van een bepaalde leverancier voor een jaar (bv. 2013) wil printen/ opslaan (een lang lijst), wilt de database niet meewerken en krijg ik de foutcode 7769, "De filterbewerking is geannuleerd. Het filter is te groot."
Waar kan dit aan liggen?

Hierbij de code van de printknop:
Code:
Private Sub Print_Selectie_Click()
    
    Dim frm As Form, ctl As Control
    Dim varItem As Variant
    Dim strsql As String
    Dim stDocName As String
   
        Set frm = Forms!Bestellingzoeker
        Set ctl = frm!lstLeverancier
        strsql = "tblBestelRegels.BestelRegel_ID in ("
        
            For Each varItem In ctl.ItemsSelected
                   strsql = strsql & ctl.ItemData(varItem) & ","
            Next varItem
            strsql = (Left$(strsql, Len(strsql) - 1))
            strsql = strsql & ")"
   
    stDocName = "rpt_tblBestelregels_print"
    DoCmd.OpenReport stDocName, acPreview, , strsql
    
End Sub


Alvast bedankt!
 
Je zou eens kunnen kijken of de string wel OK is.
Code:
            strSQL = strSQL & ")"
            Dim tmp
            tmp = InputBox("", "", strSQL)
Hiermee zet je de string in een inputbox, die je dan in Notepad o.i.d. kan plakken, zodat je kunt controleren of hij wel laat zien wat-ie moet laten zien.
 
Ik heb gekeken en hij laat niet zien wat tie moet laten zien.

Ik mis een groot aantal van de bestelregels.
Hoe komt het dat niet alle bestelregels worden meegenomen?
 
Geen idee natuurlijk, hoe zouden we dat moeten zien? Je kunt nog in de onderbrekingsmodus kijken wat hij doet. Hoe ziet de samengestelde string er uit?
 
Totaal moet het uit 433 bestaan maar het bestaat uit 165.
Verder zie ik dat de database van een bestelling met bestelnr 3579 alleen de bestelregel 9383 pakt, terwijl deze uit de bestelregels 9382, 9383, 9384 bestaat.
Ook had ik gefilterd op 2013. Dus dat ik alle bestelregels kon zien van 2013. De bestelregels voor 17-05-2013 worden helemaal niet weergegeven. Tussendoor mis ik ook veel bestelregels.

Hoe kan ik in de onderbrekingsmodus kijken dan?
 
Als je 433 bestelregels denkt te selecteren, zou ik de onderbrekingsmodus niet gebruiken, want dan kun je 433 * aantal regels op <F8> drukken. Of je doet dat in ploegendienst... Zet eerst de cursor in de regel waar je de onderbrekingsmodus wilt starten, en druk dan op <F9>. Er verschijnt een (standaardkleur) donkerrode stip in de kantlijn naast de code, en de regel wordt donkerrood. Als je de procedure nu uitvoert, dan stopt de code op die regel. Vanaf daar kun je met <F8> de losse regels doorlopen. Op die manier kun je variabelen 'inkijken', om te zien of ze netjes gevuld worden of dat de regel wordt overgeslagen. Ben je er klaar mee (en dat gaat snel bij 433 onderbrekingen in een lus) dan kun je met <F5> de normale procedure weer hervatten. Tot hij weer een onderbrekingspunt tegenkomt, dan gaat het weer stapje voor stapje. Tijdens het uitvoeren kun je, als je een onderbrekingspunt tegenkomt, weer op <F9> drukken om het punt te verwijderen, en op <F5> om de code verder uit te voeren.

Ik vermoed overigens dat je tegen de limiet van de string aanloopt, maar daarvoor zou ik toch echt de complete string moeten zien, niet alleen het aantal verwachte items.
 
Ik heb je proberen te begrijpen. Heb het denk niet helemaal kunnen uitvoeren. Na F9 heb ik alles nagelopen met F8. Zie hieronder de regels (in het rood) welke nagelopen zijn door de database. Niet allemaal dus.

Code:
Private Sub Knop21_Click()  Dim strPrinter As String
  'huidige defaultprinter ophalen
[COLOR=#ff0000]  strPrinter = Application.Printer.DeviceName[/COLOR]


  'Zet pdf writer als default printer
  'CutePDF Writer is de naam van de printer waar we op willen afdrukken
[COLOR=#ff0000]  Set Application.Printer = Application.Printers("CutePDF Writer")[/COLOR]
    
    Dim frm As Form, ctl As Control
    Dim varItem As Variant
    Dim strsql As String
    Dim stDocName As String
   
[COLOR=#ff0000]        Set frm = Forms!Bestellingzoeker[/COLOR]
[COLOR=#ff0000]        Set ctl = frm!lstLeverancier[/COLOR]
[COLOR=#ff0000]        strsql = "tblBestelRegels.BestelRegel_ID in ("[/COLOR]
        
[COLOR=#ff0000]            For Each varItem In ctl.ItemsSelected[/COLOR]
[COLOR=#ff0000]                   strsql = strsql & ctl.ItemData(varItem) & ","[/COLOR]
[COLOR=#ff0000]            Next varItem[/COLOR]
            strsql = (Left$(strsql, Len(strsql) - 1))
            strsql = strsql & ")"
            
    stDocName = "rpt_tblBestelRegels"
    DoCmd.OpenReport stDocName, , , strsql
    
  Set Application.Printer = Application.Printers(strPrinter)
End Sub

De fout wordt hier gevonden:
Code:
Private Sub Knop21_Click()
  Dim strPrinter As String
  'huidige defaultprinter ophalen
  strPrinter = Application.Printer.DeviceName


  'Zet pdf writer als default printer
  'CutePDF Writer is de naam van de printer waar we op willen afdrukken
  Set Application.Printer = Application.Printers("CutePDF Writer")
    
    Dim frm As Form, ctl As Control
    Dim varItem As Variant
    Dim strsql As String
    Dim stDocName As String
   
        Set frm = Forms!Bestellingzoeker
        Set ctl = frm!lstLeverancier
        strsql = "tblBestelRegels.BestelRegel_ID in ("
        
            For Each varItem In ctl.ItemsSelected
                   strsql = strsql & ctl.ItemData(varItem) & ","
            Next varItem
            strsql = (Left$(strsql, Len(strsql) - 1))
            strsql = strsql & ")"
            
    stDocName = "rpt_tblBestelRegels"
    DoCmd.OpenReport stDocName, , , strsql
    
  Set Application.Printer = Application.Printers(strPrinter)
End Sub

Met F8 kom ik niet tot daar. Lijkt alsof het eerder al foutgaat dus.
 
Het tweede stuk code zou moeten laten zien waar de fout zit, maar een knappe jongen die dat ziet. Ik niet in ieder geval :) Welke zwarte regel is het?
Overigens slaat <F9> commentaar en DIM regels over, dus dat klopt wel. Je For Each lus zou 433 keer doorlopen moeten worden, dus daar heb je die ploegendienst voor nodig.
 
Mijn excuses.

Code:
Private Sub Knop21_Click()
  Dim strPrinter As String
  'huidige defaultprinter ophalen
  strPrinter = Application.Printer.DeviceName


  'Zet pdf writer als default printer
  'CutePDF Writer is de naam van de printer waar we op willen afdrukken
  Set Application.Printer = Application.Printers("CutePDF Writer")
    
    Dim frm As Form, ctl As Control
    Dim varItem As Variant
    Dim strsql As String
    Dim stDocName As String
   
        Set frm = Forms!Bestellingzoeker
        Set ctl = frm!lstLeverancier
        strsql = "tblBestelRegels.BestelRegel_ID in ("
        
            For Each varItem In ctl.ItemsSelected
                   strsql = strsql & ctl.ItemData(varItem) & ","
            Next varItem
            strsql = (Left$(strsql, Len(strsql) - 1))
            strsql = strsql & ")"
            
    stDocName = "rpt_tblBestelRegels"
[COLOR="#FF0000"]    DoCmd.OpenReport stDocName, , , strsql[/COLOR]
    
  Set Application.Printer = Application.Printers(strPrinter)
End Sub
 
En nog steeds wil ik de string zien :) Code zegt niks, want die zou best kunnen werken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan