Tabelwaarde als Objectname

Status
Niet open voor verdere reacties.

XcelMan

Gebruiker
Lid geworden
15 okt 2008
Berichten
23
Goedemorgen,

Ik ben nog niet zo goed bekend met VBA maar leer dagelijks bij.
Ik heb een stukje VBA code om een rapport te exporteren naar een TXT-bestand:

Code:
DoCmd.SendObject acReport, "Openstaande orders", acFormatTXT, "info@hallo.nl", , , bestandsnaam, , True

Echter, is de bestandsnaam (Objectname) altijd "Openstaande orders".
Ik wil hiervoor de klantnaam gebruiken die staat opgeslagen in een tabel met 1 record:

tabel: "Opdrachtgever",
kolom "Bedrijfsnaam".

Probleem is echter ook dat deze record regelmatig gewist en opnieuw aangemaakt word.
Echter blijft er altijd maar 1 record aanwezig.

Wie kan mij op weg helpen met het stukje code om deze gegevens op te halen en te dimmen in de objectname? Alvast ontzettend bedankt!
 
Beetje vreemd dat je een tabel hebt waarin altijd maar 1 record voorkomt.

Je kan een query aanmaken met een andere naam. Die naam gebruik je dan om je rapport te maken.

Code:
dim strBedrijfsnaam as string
dim strSql as string

'Omdat je tabel maar 1 record heeft hoef je geen where gedeelte aan je dlookup toe te voegen.
strBedrijfsnaam = dlookup("Bedrijfsnaam","Opdrachtgever")

'de query
strSql = currentdb.querydefs("Openstaande orders").sql

'Je query met een bedrijfsnaam
makequerydef strbedrijfsnaam, strsql

DoCmd.SendObject acReport, strbedrijfsnaam, acFormatTXT, "info@hallo.nl", , , bestandsnaam, , True
de code voor makequerydef en deletequerydef:
Code:
Public Function MakeQueryDef(strSQLname As String, strSQLdef As String) As Boolean
   
   Dim qdf As QueryDef
   Dim dbs As Database

   On Error GoTo Err_MakeQueryDef

   Set dbs = CurrentDb

   DeleteQueryDef strSQLname ' Query weggooien als die bestaat

   Set qdf = dbs.CreateQueryDef(strSQLname, strSQLdef)

   MakeQueryDef = True

Exit_MakeQueryDef:
   Exit Function

Err_MakeQueryDef:
   MakeQueryDef = False
   MsgBox "Fout in MakeQueryDef : " & Err.Number & ":" & Err.Description, vbExclamation, GetAppTitle() & " Fout bij maken query definitie."
   Resume Exit_MakeQueryDef
   Resume
End Function
'
Public Sub DeleteQueryDef(strSQLname As String)

   Dim dbs As Database

   Set dbs = CurrentDb

   On Error Resume Next
   dbs.QueryDefs.Delete strSQLname 'Genereert fout als query niet bestaat.

End Sub
Enjoy!
 
Ik zou, als je in de tabel toch maar één record hebt met de naam, een recordset openenen, de naam uitlezen en die als variabele in je rapportcommando stoppen.
Dus zo:

Code:
Dim sBedrijf As String	
    strSql = "SELECT TOP 1 [Bedrijfsnaam]  FROM Opdrachtgever"
    Set db = CurrentDb()
    Set rs = db.OpenRecordset(strSql)
          If Not rs.BOF And Not rs.EOF Then
	rs.MoveFirst
	sBedrijf = rs.Fields("Bedrijfsnaam").Value	
	rs.Close
	Set rs = Nothing
	db.Close
	Set db = Nothing
     Else
	rs.Close
	Set rs = Nothing
	db.Close
	Set db = Nothing
	Exit Sub
     End If

     DoCmd.SendObject acReport, "Openstaande orders", acFormatTXT, "info@hallo.nl", , , sBedrijf, , True
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan