Data type mismatch in mailmerge con tabella sql

di il
8 risposte

Data type mismatch in mailmerge con tabella sql

Mi dispiace postare una domanda che sembra stupida anche a me, ma mi sta facendo impazzire. Ho una sub che stampa una lettera con word mailmerge. I dati venivano presi dma uno sheet excel, e tutto funzinava. Per varie ragioni, ho portato tutti i dati sotto sqlexpress (incluso quelli di excel) modificando il codice quanto necessario. Purtroppo, dopo le correzioni fatte, mi trovo bloccato con il runtime errror Data type mismatch di cui non riesco a venire a capo. L'errore è nello statement .opendatasource. C'è un modo dim capire che cosa provoca l'errore?

Sub PrintLetter2(Numerotessera As Double)
'Mail merge e stampa su stampante di default

'On Error GoTo ErrorHandler

' open template in Word
Dim filepath As String
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim strConnection As String, myquery As String
Dim bPrintBackgroud As Boolean
Dim oMerged As Document

Set WordApp = New Word.Application
filepath = CurrentProject.path
Debug.Print filepath, Numerotessera
With WordApp
    .Visible = True
    Set WordDoc = .Documents.Open(filepath & "\LetteraNuoviSoci.docx")
End With
'MailMerge selected records from table to Word document

myquery = "SELECT * FROM [LibroSoci] WHERE [Numero tessera] = " & Numerotessera
With WordApp
    .ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
    .ActiveDocument.MailMerge.OpenDataSource _
        Name:="C:\Testhyp4\RicevuteConPrimaNotaFE.accdb", _
        ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:=RicevuteCPNCompleto, _
        SQLStatement:=myquery, SQLStatement1:="", _
        SubType:=wdMergeSubTypeOther
      

        bPrintBackgroud = Options.PrintBackground
        Options.PrintBackground = False
        .Application.DisplayAlerts = wdAlertsNone
        
   With .ActiveDocument.MailMerge
              
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        
        'filepath & "\" & CurrentProject.Name, _

        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        
        .Execute Pause:=False
    End With
           Set oMerged = .ActiveDocument
            'Show the Print dialog box
            .Visible = True
            .Activate
            .Dialogs(wdDialogFilePrint).Show
            oMerged.Close 0
            'Restore all the alerts
            .Application.DisplayAlerts = wdAlertsAll
            Options.PrintBackground = bPrintBackgroud
End With



WordDoc.Close SaveChanges:=False
WordApp.Quit

ErrorHandlerExit:
Exit Sub
ErrorHandler:
If Err = 429 Then
'word is not running; open word with CreateObject
Set appWord = CreateObject(Class:="Word.Application")
End If

End Sub

8 Risposte

  • Re: Data type mismatch in mailmerge con tabella sql

    Perché hai scritto nella sezione "Sql Server"?

    Che variabile è e cosa contiene

    RicevuteCPNCompleto

    ?
  • Re: Data type mismatch in mailmerge con tabella sql

    Salve,

    > myquery = "SELECT * FROM [LibroSoci] WHERE [Numero tessera] = " & Numerotessera

    [Numero tessera] che tipo di dato e'?
    cosi' come e' passato deve essere numerico... e' corretto?

    salutoni romagnoli
    --
    Andrea
  • Re: Data type mismatch in mailmerge con tabella sql

    Perchè ho scritto nel forum SQL? Perchè RicevuteCPNCompleto è un database sotto SQLEXPRESS, e una delle sue tabelle è io sheet excel menzionato. Il database funge come backend all'applicazione access, tutte le tabelle sono linked all'applicazione. Posso naturalmente sbagliare, è il primo post... se è così, chiedo scusa.
    Ovviamente, il tipo di Numero Tessera è la prima cosa che ho verificato. La variabile NumeroTessera è passata alla sub come double. [Numero tessera] è definita nella tabella SQL come float (non c'è double in SQL), mentre è definita double nella tabella linked in access. Magari è questo che causa il problema?
  • Re: Data type mismatch in mailmerge con tabella sql

    Ma l'errore lo fornisce la linea VBA.

    Ti ripeto la domanda che ti ho fatto prima

    "Che variabile è e cosa contiene RicevuteCPNCompleto" ?
  • Re: Data type mismatch in mailmerge con tabella sql

    Mi dispiace, credo di non capire la domanda. RicevuteCPNCompleto non è una variabile, è il nome del database contenente tutti i miei dati (le mie tabelle) sotto il server SQLEXPRESS. La sintassi che ho usato l'ho trovata spulciando in Internet, ma posso aver frainteso qualcosa.
    myquery vorrebbe effettuare un select dalla tabella LibroSoci (appartenente al database in questione) delm record corrispondente al numerom tessera scelto dall'utente.
    Non so che dire, sbaglio qualcosa?
  • Re: Data type mismatch in mailmerge con tabella sql

    Se è un nome, una stringa, va tra virgolette, altrimenti è una variabile

    "RicevuteCPNCompleto"
  • Re: Data type mismatch in mailmerge con tabella sql

    Grazie infinite. Sono stato ingannato da quanto scovato su Internet, e comunque era l'unica Sub in cui avevo omesso l'option explicit. Grazie ancora
  • Re: Data type mismatch in mailmerge con tabella sql

    Ecco vedi ... era un problema di sintassi VBA Excel e andava in quella sezione. Ecco perché ti dicevo che SQL Server non c'entrava nulla.

    Comunque, importante risolvere
Devi accedere o registrarti per scrivere nel forum
8 risposte