[AccessD] Print letter from InputBox data (contains long code at bottom)

Software Design & Solutions Pty Ltd. SDSSoftware at Optusnet.com.au
Thu Jun 19 18:32:41 CDT 2003


Bob - just wondering.....do the users have a preference for the input box approach? Another idea is to have a form (bound to a report table) where the user gets to plug in the content to those fields and then click a preview button to produce the report with that data. I use that approach quite a lot - it can be very frustrating entering data into input boxes - one false move and you have to start over. With the form approach they can keep editing until they get it right and re-use common text.

Kath
  ----- Original Message ----- 
  From: Bob Gajewski 
  To: 'accessd at databaseadvisors.com' 
  Sent: Friday, June 20, 2003 1:55 AM
  Subject: [AccessD] Print letter from InputBox data (contains long code at bottom)


  Dear Group

  I have a generic letter report that uses InputBoxes to allow custom 
  on-the-fly paragraph data entry.

  The sequence asks the user for paragraph 1. If anything was input, it asks 
  for paragraph 2, then 3, then 4. Finally, it asks for the signator's name 
  and title. The report os then displayed in preview mode. ALL OF THIS WORKS 
  PERFECTLY. I can see the entire letter with all data, as entered. Also, 
  when the preview is closed, the user is asked whether the letter printed 
  properly, and if they respond yes, it automatically writes a record to the 
  comments child table to record the event. THIS ALSO WORKS PERFECTLY.

  My problem is when I try to actually print the letter (using File, Print or 
  clicking on the Print button), the program somehow starts over and prompts 
  the user for paragraph one again (et cetera). I sure don't want users 
  having to type their letters twice!

  I'm missing something probably very obvious, and any guidance would be 
  greatly appreciated!

  Thanks,
  Bob Gajewski

  **********************************************
  Option Compare Database
  Option Explicit
  Public gvarRecordFound As Boolean
  Public strInput1 As String
  Public strInput2 As String
  Public strInput3 As String
  Public strInput4 As String
  Public strInputS As String
  Public strInputT As String
  ------------------------------------------------------
  Private Sub Report_NoData(Cancel As Integer)
  Dim Msg, Response
  Msg = "This report is not available; no records exist."
  Response = MsgBox(Msg, vbInformation)
  DoCmd.CancelEvent
  End Sub
  ------------------------------------------------------
  Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

  gvarRecordFound = True

  Dim MyPos
      MyPos = InStr(1, [txtJobHomeownerName], ",")

  If MyPos > 0 Then
      Me.txtLetterName = Mid([txtJobHomeownerName], MyPos + 1, 35) & " " & 
  Left([txtJobHomeownerName], MyPos - 1)
      Me.txtSalutation = "Dear " & Mid([txtJobHomeownerName], MyPos + 1, 35) 
  & " " & Left([txtJobHomeownerName], MyPos - 1) & ":"
  Else
      Me.txtLetterName = [txtJobHomeownerName]
      Me.txtSalutation = "Dear " & [txtJobHomeownerName] & ":"
  End If

  If Left([txtLetterName], 1) = " " Then
      [txtLetterName] = Mid([txtLetterName], 2, 35)
  End If

  If Left([txtSalutation], 1) = " " Then
      [txtSalutation] = Mid([txtSalutation], 2, 41)
  End If

      Me.txtLetterAddress = [txtJobAddress]
      Me.txtLetterLocation = [txtJobMunicipalityName] & ", " & 
  [txtJobStateCode] & " " & [txtJobZipCode]
      Me.txtClaimNumber = "'" & [txtJobCompanyReference] & "'"

  'Allow user to enter text for paragraphs 1-4
      Dim strMsg1 As String
          strMsg1 = "Please enter the text for paragraph 1:"
          strInput1 = InputBox(Prompt:=strMsg1, Title:="Paragraph 1")
          If Not (IsNull(strInput1) Or strInput1 = "") Then
              Me.txtParagraph1 = strInput1
              Dim strMsg2 As String
                  strMsg2 = "Please enter the text for paragraph 2:"
                  strInput2 = InputBox(Prompt:=strMsg2, Title:="Paragraph 2")
                  If Not (IsNull(strInput2) Or strInput2 = "") Then
                      Me.txtParagraph2 = strInput2
                      Dim strMsg3 As String
                          strMsg3 = "Please enter the text for paragraph 3:"
                          strInput3 = InputBox(Prompt:=strMsg3, 
  Title:="Paragraph 3")
                          If Not (IsNull(strInput3) Or strInput3 = "") Then
                              Me.txtParagraph3 = strInput3
                              Dim strMsg4 As String
                                  strMsg4 = "Please enter the text for 
  paragraph 4:"
                                  strInput4 = InputBox(Prompt:=strMsg4, 
  Title:="Paragraph 4")
                                  If Not (IsNull(strInput4) Or strInput4 = 
  "") Then
                                      Me.txtParagraph4 = strInput4
                                  End If
                          End If
                  End If

              'Allow user to enter text for signator and title
                  Dim strMsgS As String
                      strMsgS = "Please enter the signator's name:"
                      strInputS = InputBox(Prompt:=strMsgS, 
  Title:="Signator")
                      If Not (IsNull(strInputS) Or strInputS = "") Then
                          Me.txtSignator = strInputS
                          Dim strMsgT As String
                              strMsgT = "Please enter the signator's title:"
                              strInputT = InputBox(Prompt:=strMsgT, 
  Title:="Title")
                              If Not (IsNull(strInputT) Or strInputT = "") 
  Then
                                  Me.txtSignatorTitle = strInputT
                              End If
                      Else
                          Me.txtSignator = "Renaissance Siding"
                      End If
          Else
              MsgBox "There was no text entered for Paragraph 1."
              Cancel = True
              gvarRecordFound = False
          End If

  End Sub
  ------------------------------------------------------
  Private Sub Report_Close()
  If gvarRecordFound = False Then
      Exit Sub
  End If
  Dim db As Database, rs As Recordset
  Dim Response
  Dim strMsgPrint As String
      strMsgPrint = "Did the letter print properly?"
  If vbNo = MsgBox(strMsgPrint, vbYesNo + vbQuestion, "Print Letter 
  Verification") Then
      Response = acDataErrDisplay
  Else
      'Add letter subject to comments
      Dim strInput As String, strMsg As String
          strMsg = "What was the subject of this letter?"
          strInput = InputBox(Prompt:=strMsg, Title:="Subject")
          If IsNull(strInput) Or strInput = "" Then
              strInput = "NOT SPECIFIED"
          End If
      Set db = CurrentDb
      Set rs = db.OpenRecordset("tblJobComments", dbOpenDynaset)
      On Error Resume Next
      rs.AddNew
          Dim strComment As String
              strComment = "HOMEOWNER LETTER PRINTED (SUBJECT: " & 
  UCase(strInput) & ")."
          rs!lngJobID = lngJobID
          rs!txtJobComment = strComment
          rs!dteJobCommentNow = Now()
          rs!cboJobCommentPrivate = False
      rs.Update
      If Err Then
          MsgBox "An error occurred, and the comments were not updated." & 
  vbCrLf & "Remember to add a comment to the database" & vbCrLf & "record 
  indicating that the letter was sent today."
          Response = acDataErrContinue
      Else
          Response = acDataErrAdded
      End If
      rs.Close
  End If
  End Sub

  _______________________________________________
  AccessD mailing list
  AccessD at databaseadvisors.com
  http://databaseadvisors.com/mailman/listinfo/accessd
  Website: http://www.databaseadvisors.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://databaseadvisors.com/pipermail/accessd/attachments/20030620/c2dd5fe1/attachment-0001.html>


More information about the AccessD mailing list