2010-10-20 16 views
1

J'ai une liste déroulante qui est liée à une colonne dans une feuille de calcul Excel. Je sélectionne un client dans la liste déroulante, puis remplis certains champs d'adresse avec des données connexes également à partir de la feuille de calcul Excel.Comment faire pour gérer les valeurs null dans la requête SQL VBA Word?

code:

Private Sub cboCompany_Change() 
      Dim customerName As String 
      customerName = cboCompany.Value 
      customerName = Replace(customerName, "'", "''") 

      Dim i As Integer 
      Dim cn As ADODB.Connection 
      Dim rsT As New ADODB.Recordset 

      Dim customer As String 
      Dim postcode As String 
      Dim address1 As String 
      Dim suburb As String 
      Dim addressType As String 
      Dim state As String 
      Dim country As String 


      Set cn = New ADODB.Connection 
      With cn 
      .Provider = "Microsoft.Jet.OLEDB.4.0" 
      .ConnectionString = "Data Source=C:\Customer.xls;Extended Properties=Excel 8.0;" 
      .CursorLocation = adUseClient 
      .Open 
      End With 
      rsT.Open "SELECT Customer, Postcode, [Address 1] AS Address1, [Postal Suburb] AS Suburb, [Address Type] AS AddressType, State, Country FROM Customers WHERE [Address Type] = 'Postal Address' AND Customer = '" & customerName & "'", cn, adOpenStatic 

      i = 0 

      With rsT 
      Do Until .EOF 
      customer = rsT.Fields("Customer") 
      postcode = rsT.Fields("Postcode") 
      address1 = rsT.Fields("Address1") 
      suburb = rsT.Fields("Suburb") 
      addressType = rsT.Fields("AddressType") 
      state = rsT.Fields("State") 
      country = rsT.Fields("Country") 

      CompanyAddress1.Value = address1 
      CompanyAddress2.Value = suburb + " " + state + " " + postcode + " " + country 
      CompanyName.Value = customer 
      .MoveNext 
      i = i + 1 
      Loop 
      End With 
End Sub 

Cependant, si l'un des champs (banlieue par exemple) est vide la forme plante alors comment puis-je gérer cela?

+0

Votre titre dit Word, mais votre question parle d'Excel. –

+0

J'ai la macro dans le document Word mais elle récupère les données d'une feuille de calcul Excel. – Morgan

+0

Quoi qu'il en soit, avec suburb = rsT.Fields ("Suburb") et banlieue est nul pour ce client, comment puis-je faire face à cela? – Morgan

Répondre

0

Vous pouvez utiliser la fonction vba IsNull. Donc, quelque chose comme ce qui suit

If IsNull(rsT.Fields("Customer")) Then 

End If 

or 

If Not IsNull(rsT.Fields("Customer")) Then 

End If 

Enjoy!

+1

THanks Doug, j'ai fait If IsNull (rsT.Fields ("State")) Puis state = "" Sinon state = rsT.Fields ("State") Fin Si – Morgan