Windows 10 en Access 2007, probleem met query

Status
Niet open voor verdere reacties.

Haarie80

Gebruiker
Lid geworden
14 jun 2016
Berichten
6
Beste forumleden,

Wij gebruiken bij ons op het werk een database gemaakt met Access 2007 en die werkt prima op Windows 7.
Vorige week zijn wij bij ons bedrijf overgegaan op Windows 10 en nu loop ik tegen een aantal problemen aan.
Allereerst waren er een aantal verwijzingen in VBA gewijzigd maar die heb ik weer terug gezet. Dat probleem lijkt nu verholpen.

Het probleem wat nu nog bestaat is het volgende:
Ik heb een query waarin ik een jaartal uit een datum trek met de volgende functie: Jaar: Format([datumbegin];"yyyy")
Als ik de query uitvoer krijg ik de melding: De expressie bevat een ongedefinieerde functie Format.

In dezelfde query heb ik ook de volgende functie staan: Afgehandeld: IIf([datumeind]<Date();"Afgehandeld";"Lopend")
Als ik de query uitvoer krijg ik de melding: De expressie bevat een ongedefinieerde functie Date.

Heeft iemand een idee wat dit betekend en hoe ik dit op kan lossen?
Een andere DB waarin vergelijkbare functies staan heeft deze problemen niet (ook Windows 10 en Access 2007).

Misschien loop ik later tegen nog meer problemen aan, als iemand nu al tips heeft hoor ik die graag.

Alvast bedankt voor jullie reactie!
 
Je problemen hebben niks met de onderhavige functies te maken, vrees ik. Date() en Format() moeten natuurlijk gewoon werken, en doen dat eigenlijk ook wel. Het probleem wordt veroorzaakt doordat er ergens in de db een fout zit. Welke fout, is niet te zeggen zonder de db te zien, en vermoedelijk kun je hem zelf ook wel vinden. Kwestie van via <Foutopsporing>, <db compileren> alles door te lopen. Geheid dat Access minstens één probleem vindt, wellicht meer. Die codes moet je dan uiteraard repareren. Het makkelijkst is om ze, als je vermoed dat het om ongebruikte procedures gaat, ze te markeren als commentaar. Heb je de functie wél nodig, dan moet je uiteraard de fout verhelpen.
Als de db helemaal zonder fouten gecompileerd kan worden, dan zijn de Date en Format problemen vermoedelijk ook weg.
 
Hoi Octafish,

Dank voor je snelle reactie.
Ik ben inderdaad tegen wat problemen aangelopen tijdens het compileren (VBA), maar heeft dit ook iets te maken met de format problemen in de query?

Ik krijg met compileren al een fout op een simpel stukje code, namelijk Me.HotelAdres = Me.HotelNaam.Column(1) waarbij .Column gehighlight wordt en de volgende melding verschijnt:
Compileerfout: Kan de methode of het gegevenslid niet vinden.

Heeft dit iets te maken met verwijzingen?
 
De fouten kunnen overal zitten. Vaak is het een kwestie van bibliotheken (al gaf je aan dat je dat had gecontroleerd). Welke Office versie gebruiken jullie nu? En is dat nog steeds een 32 bits versie? Want een 32 bits versie kun je niet zonder problemen overzetten naar een 64 bits Office. Die sowieso geen enkel voordeel biedt maar alleen problemen oplevert. Let wel: ik heb het over de Office versie, niet de Windows versie. De 64 bits Windows gaat prima met een 32 bits Office.

Alle opdrachten die zouden moeten kloppen, zoals de verwijzing naar Column(1), zou je eens kunnen markeren als commentaar zodat je door kunt zoeken naar de volgende 'fout'. Want er gaat dus duidelijk iets mis.
 
Bij onze ICT afdeling nagevraagd maar wij hebben 32 bits Office en 64 bits Windows, zou dus goed moeten zijn zoals je al aangaf.

Ik heb nu alle fouten gemarkeerd als commentaar en de query werkt weer zoals ie hoort. Ligt dus inderdaad niet aan de Date() of Format(). Overigens hebben de gebruikers die nog Windows 7 hebben dezelfde foutmeldingen tijdens compileren maar daar werkt de query wel. Lijkt dus een Windows 10 probleem te zijn.

Alle fouten waren zoals de verwijzing naar Column(1), op 3 na. Deze fouten zitten in 3 functies uit een module die ik ooit eens op internet heb gevonden. Hieronder een voorbeeld van één van deze funcites (andere 2 zijn vergelijkbaar):
Code:
Public Function fFileDialogSavePDFname() As String
' Calls the API File Open Dialog Window
' Returns full path to existing Snapshot File

On Error GoTo Err_fFileDialog

' Call the File Common Dialog Window
Dim clsDialog As Object
Dim strTemp As String
Dim strFname As String

Set clsDialog = New clsCommonDialog

' Fill in our structure
' I'll leave in how to select Gif and Jpeg to
' show you how to build the Filter in case you want
' to use this code in another project.
clsDialog.Filter = "PDF (*.PDF)" & Chr$(0) & "*.PDF" & Chr$(0)
'clsDialog.Filter = "ALL (*.*)" & Chr$(0) & "*.*" & Chr$(0)
clsDialog.hDC = 0
clsDialog.MaxFileSize = 256
clsDialog.Max = 256
clsDialog.FileTitle = vbNullString
clsDialog.DialogTitle = "Please Select a name for the PDF File"
clsDialog.InitDir = vbNullString
clsDialog.DefaultExt = vbNullString



' Display the File Dialog
clsDialog.ShowOpen

' See if user clicked Cancel or even selected
' the very same file already selected
strFname = clsDialog.FileName
If Len(strFname & vbNullString) = 0 Then
' Do nothing. Add your desired error logic here.
End If

' Return File Path and Name
fFileDialogSavePDFname = strFname

Exit_fFileDialog:

Err.Clear
Set clsDialog = Nothing
Exit Function

Err_fFileDialog:
fFileDialogSavePDFname = ""
MsgBox Err.Description, vbOKOnly, Err.Source & ":" & Err.Number
Resume Exit_fFileDialog

End Function
Compileren loopt vast op: New clsCommonDialog

Nadat ik de betreffende regel de commentaar markering had verwijderd blijkt de query evengoed te werken.
Het probleem zit hem zich dus echt in de after update van een combobox waar ik een waarde wegschrijf in een ander veld.
 
Laatst bewerkt:
Deze functie is zeker niet standaard Office, en als het alleen om het ophalen van bestanden gaat, zou ik 'm dus niet gebruiken omdat in de Office Library een prima FileDialog zit:
Code:
Function BestandOpzoeken(Optional BeginMap As String) As String
If Nz(BeginMap, "") = "" Then
    'Open de Windows bestandenlijst, met als argument het type
    Set dlgPicker = Application.FileDialog(msoFileDialogFilePicker)
    
    With dlgPicker
        .Title = "Selecteer een bestand." 'De titel voor het venster
        '**************************************************************************
        'Pas dit aan voor map met afbeeldingen
        '**************************************************************************
        .InitialFileName = CurrentProject.Path      'Waar moet het venster beginnen?
        .Filters.Add "PDF", "*.pdf", 1              '.pdf, en maak dat het eerste item in de lijst
        .Filters.Add "Doc", "*.doc; *.dot; *.docx; *.dotx"
        .Filters.Add "Xls", "*.xls; *.xlt; *.xlx"
        .Filters.Add "Afbeeldingen", "*.jpg; *.jpeg; *.png"
        .FilterIndex = 1
        .AllowMultiSelect = False                   'Slechts één bestand kiezen toegestaan.
        .InitialView = msoFileDialogViewList        'Bepaal weergave
        If .Show = -1 Then                          'Bepaal of gebruiker op OK-knop heeft geklikt.
            strFileName = .SelectedItems.Item(1)    'String wordt gevuld met geselecteerde bestand
        End If
    End With
    If Nz(strFileName, "") <> "" Then
        BestandOpzoeken = strFileName
    End If
End If

End Function
Ook te gebruiken om bestanden weg te schrijven of mappen te lezen i.p.v. bestanden; kwestie van een andere parameter in de Set dlgPicker regel.
 
Een mogelijke oplossing: controleer of je bij de Visual Basic editor bij verwijzingen ook 'OLE Automation' hebt aangevinkt.
Ik vergat dat vroeger ook wel eens en kreeg altijd de meest vreemde foutmeldingen.:eek:

Jan
 
Deze regel
Code:
Set clsDialog = New clsCommonDialog
roept volgens mij een Klassemodule aan en die functie maakt dus gebruik van API calls. Die zijn in Windows 10 blijkbaar anders dan in Windows 7. Het kan ook zijn dat die klassemodule ontbreekt. Er is m.i. geen enkele reden om voor bestandsacties nog met API calls te werken; het eigen FileDialog werkt perfect. Maar laten we even afwachten wat TS nog te melden heeft :).
 
Hoi allemaal,

Bedankt voor jullie reacties.
Ik ga die module eruit gooien. Toen we een oudere versie van access gebruikte was deze module nodig om PDF's mee te maken maar dat kan nu makkelijker vanuit access zelf (DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, pad & sFile,)

De verwijzing naar OLE Automation staat aan.

Zou het probleem met after update van een combobox (Me.HotelAdres = Me.HotelNaam.Column(1)) opgelost zijn als ik die modules eruit gooi?
 
Je probleem wordt overduidelijk door die API functie veroorzaakt. Zoals ik al eerder zei: de geconstateerde problemen hebben in beginsel niks met de code te maken waarin je het merkt. De AfterUpdate zal gelijk weer werken als je alle meuk eruit flikkert. Is my humble opinion :).
 
Ik heb die module met die rare functies er helemaal uitgegooid en het lijkt allemaal weer te werken!
Thanks voor de hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan