Newsgroup: it.comp.lang.visual-basic
Titolo: Visual Basic in Winword

Salve,
ho un piccola problema.
Chi può aiutarmi ?
Ho sviluppato questo modulo che ricopio a beneficio di tutti.
Sub AVVIO()
On Error Resume Next
X = InputBox("Immettere il cognome da cercare")
    If X = "" Then Resume Next
    ActiveDocument.MailMerge.DataSource.QueryString = _
    "SELECT * FROM C:\Documenti\Elenco.doc WHERE Cognome = '" & X & "'"
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .MailAsAttachment = Fals
        .MailAddressFieldName = ""
        .MailSubject = ""
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=True
    End With
End Sub
Praticamente io ho un documento principale "fatture.doc" che contiene una
lettera.
Usando "Stampa Unione" ho inserito i campi Cognome, Nome e Fattura.
Ebbene quando lancio il modulo di cui sopra, una INPUTBOX chiede quale
cognome cercare.
Una volta inserito il cognome, lo va a cercare nel file "elenco.doc"(senza
aprire il file), selezionandolo.
Poi apre un'altro file.doc e mi prepara una lettera indirizzata al tizio con
quel Cognome, Nome e Fattura (snellendomi tantissimo il lavoro!).
Fin qui tutto OK.
Il problema sorge quando ci sono due o più cognomi uguali.
La domanda quindi è: come faccio a chiedere di verificare se in elenco dci
sono cognomi doppi ?
Bye, Ennio.

 sono cognomi doppi ?
Confesso di non aver mai sperimentato nulla di simile, ma visto che la
selezione la fai mediante SQL potresti verificare se 'X' è un cognome
"doppio" con la seguente query:
"select count(cognome) as n from C:\Documenti\Elenco.doc  where Cognome='" &
X & "'  group by cognome"
se viene restituito n>1 allora il cognome 'X' è doppio
Ciao, M.

 ha scritto nel messaggio
news:9cmerp$ef1ck$2...@ID-80805.news.dfncis.de...


 ha scritto nel
messaggio news:9cr3a9$nff$1...@lacerta.tiscalinet.it...


 La domanda quindi è: come faccio a chiedere di verificare se in elenco dci
sono cognomi doppi ?
  Ti posto un esempio che vuol essere anche una riscrittura riveduta e
(spero) corretta del tuo:
Option Explicit
Public Sub CreaLetteraTipo( _
)
  On Error GoTo Err
  Dim strCognome      As String
  Dim blnContinua     As Boolean
  Dim strQueryString  As String
  Dim lngRecords      As Long
  Dim strNome         As String
  strCognome = InputBox("Cognome?")
  blnContinua = Len(strCognome) <> 0
  If blnContinua Then
    strCognome = Replace(strCognome, "'", Chr$(146))
    With ActiveDocument.MailMerge.DataSource
      strQueryString = "SELECT * FROM '" & .Name & "'"
      On Error Resume Next
      .QueryString = ""
      .QueryString _
        = strQueryString _
        & " WHERE ((Cognome = '" & strCognome & "'))"
      With Err
        blnContinua = (.Number = 0) Or (.Number = 4198)
      End With
      On Error GoTo Err
    End With
  End If
  If blnContinua Then
    With ActiveDocument.MailMerge.DataSource
      .ActiveRecord = wdLastRecord
      lngRecords = .ActiveRecord
    End With
    If lngRecords > 1 Then
      strNome = InputBox("Nome?")
      blnContinua = Len(strNome) <> 0
    End If
  End If
  If blnContinua Then
    If lngRecords > 1 Then
      strNome = Replace(strNome, "'", Chr$(146))
      On Error Resume Next
      With ActiveDocument.MailMerge.DataSource
        .QueryString = ""
        .QueryString _
          = strQueryString _
          & " WHERE (" _
          & "(Cognome = '" & strCognome & "') AND " _
          & "(Nome = '" & strNome & "')" _
          & ")"
      End With
      With Err
        blnContinua = (.Number = 0) Or (.Number = 4198)
      End With
      On Error GoTo Err
    End If
  End If
  If blnContinua Then
    ActiveDocument.MailMerge.Execute True
  End If
  Exit Sub
Err:
  With Err
    MsgBox .Description, vbCritical, "Errore " & .Number
  End With
End Sub
  Probabilmente ci saranno diverse cose che vorrai discutere.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

   Probabilmente ci saranno diverse cose che vorrai discutere.
Sarebbero troppe !
Cercherò di capirci qualcosa da me (finora mi sembra arabo-cinese-russo !)
per imparare.
In ogni caso vorrei ringraziarti per la disponibilità ed additarti ad
esempio per gli amici del NG.
PS: Per Margherita:
NON COPIARE IL MIO MODULO, beccati questo che è molto meglio.
Bye.-

 esempio per gli amici del NG.
Più come esempio ci sarebbe bisogno di Maurizio come professore :-)
Chiunque abbia un problema con Excel o Word manda il suo piccolo
thread....qualcuno tenta di rispondere..... poi arriva Maurizio con 50 righe
di codice fatte ad hoc e azzitisce tutti!  :-)))
Ciao M.

 Chiunque abbia un problema con Excel o Word manda il suo piccolo
thread....qualcuno tenta di rispondere..... poi arriva Maurizio con 50 righe
di codice fatte ad hoc e azzitisce tutti!
:-)))
  Anche tu come MarioH! A me 'sta storia che arrivo dopo proprio non riesce
ad andarmi giu`. Ne devo parlare con Mr. Stat...


 Magari ci fossero più persone pazienti come te !
  Direi che la pazienza, non solo mia ma penso di tutti noi "rispostari",
sia anche in funzione della qualita` dei quesiti. Quindi complimenti a te,
principalmente.
