Toon posts:

[Acces + SQL] tekst bericht weergeven bij fout

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het volgende:
Ik heb in mijn database een toevoeg query gemaakt. Deze haalt gegevens uit een gekoppelde .txt bestand en inporteerd deze in een tabel. Ik heb in een macro gezet dat hij de query uit moet voeren nadat ik het commande geven heb. Dit werkt allemaal perfect. Nu als de .txt bestand niet bestaat geeft acces aan dat hij de macro niet uit kan voeren, :+ Nu zou ik graag willen hebben dat acces laat zien inplaats van die foutmeldingen, mij een textbericht met de tekst, het bestand bevind zich niet in de map, of zo iets iig. Tevens is dat wat gebruiksvriendelijker :)

[ Voor 3% gewijzigd door Verwijderd op 28-02-2004 21:20 . Reden: spelfout ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 01-09 09:20

Boss

+1 Overgewaardeerd

Dan zal je met VBA code aan de slag moeten gaan (ervan uitgaande dat je het met 'mijn database' over een MS Access database hebt?)

Via de functie Dir() kan je opvragen of een bestand aanwezig is op een bepaald pad. Bijvoorbeeld:
code:
1
Dir(C:\map\bestand.txt)

geeft bestand.txt als resultaat als het bestand bestaat, en anders is het reultaat leeg.

Via DoCmd.RunSQL of Currentdb.Queriedefs("NaamVanQuery").Execute kan je de query uit laten voeren.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Het is idd een MS Database. Ik ben niet helemaal op de hoogte hoe ik de code dan precies uit moet werken. En moet ik de code dan in de sql van de query zetten?

Bedankt voor de reactie

Verwijderd

Je kunt de code invoeren in een nieuwe module in Access.

Het zou er als volgt uit kunnen zien:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function fcImportText()
 
    Dim sFile As String: sFile = "c:\text1.txt"             'Bestand dat je wilt inlezen
    Dim sSQL As String                                      'String die je SQL query bevat
    
    'Check of het te importeren bestand bestaat
    If (Dir(sFile) = "") Then                               'Als het bestand niet bestaat is resultaat een lege string
        MsgBox "Bestand niet gevonden!", vbCritical         'Melding geven aan gebruiker
        Exit Function                                       'Bewerking afsluiten
    End If
    
    'Bestand importeren via SQL query
    sSQL = "INSERT INTO etc..."                             'Inhoud van de string vervangen door de SQL query...
    
    DoCmd.RunSQL sSQL
    
    

End Function



De SQL code die je kunt toekennen aan de stringvar sSQL haal je uit de Query die je al hebt aangemaakt. Query openen in design view en vervolgens SQL view kiezen. De tekst die je te zien krijgt kun je kopieren en plakken

Succes

Verwijderd

Topicstarter
_/-\o_

Ik heb nu een module aangemaakt. De sql code ingevoerd op de paats waar je t aangeven had. En toen, haha. Ik heb hier nog nooit mee gewerkt, dus voor mij, nieuw. iig bedankt

Verwijderd

Verwijderd schreef op 02 maart 2004 @ 11:53:
En toen, haha. Ik heb hier nog nooit mee gewerkt, dus voor mij, nieuw. iig bedankt
Maar: werkt het of vliegen de foutmeldingen je om de oren ?

In geval 2: een zoektocht in de help functie van Access naar RunSql zou meer duidelijkheid kunnen geven ;)

Verwijderd

Topicstarter
Ik heb de module nu helemaal aangepast. En als ik deze uitvoer doet hij t perfect. Maar hoe kan ik de module uitvoeren als ik bijvoorbeeld met een schakelbord werk. kheb verschillende dingen geprobeerd met macro, enz. Maar kom er niet aan uit.

Verwijderd

Wat je kunt doen is onder een van de command buttons een macro hangen.

Dit doe je door via de properties van de button een OnClick-event aan te maken (op het tabje Events) door in de tekstdoos achter OnClick de naam van je macro (die de functie aanroept) in te voeren.

De macro bestaat dan alleen uit de regel RunCode met daaraan gelinkt de functie die je wil uitvoeren.

Op die manier moet je t kunnen gebruiken in een schakelbord.
Pagina: 1