2016-07-18 9 views
0

最近、アクセスの中で何かをやろうとしていて、静かにできないという問題があります。今 My queryAccess 2003 - VBA/queryエラーメッセージ

Option Compare Database 
Option Explicit 


Private Sub cboLocation_AfterUpdate() 
    Me.cboServer.RowSource = " SELECT tbl2Server.ServerID, tbl2Server.ServerName FROM tbl2Server " & _ 
     " WHERE LocationName = " & Nz(Me.cboLocation) & _ 
     " ORDER BY ServerName" 
    Me.cboServer = Null 

    EnableControls 
    FilterInterfacesList 

End Sub 

Private Sub cboServer_AfterUpdate() 
    Me.cboInterface.RowSource = " SELECT tbl2Vlan.VlanID, tbl2Vlan.InterfaceName FROM tbl2Vlan " & _ 
     " WHERE LocationName = " & Nz(Me.cboLocation) & _ 
     " ORDER BY InterfaceName" 
    Me.cboInterface = Null 

    EnableControls 
    FilterInterfacesList 

End Sub 

Private Sub cboInterface_AfterUpdate() 
    EnableControls 
    FilterInterfacesList 

End Sub 

Private Sub FilterInterfacesList() 
    Dim strInterface As String 

    strInterface = "SELECT qryServerInterfaces.LocationName, qryServerInterfaces.ServerName, qryServerInterfaces.InterfaceName, qryServerInterfaces.VlanName, qryServerInterfaces.IPAddress, qryServerInterfaces.DefaultGatewayAddress FROM qryServerooInterfaces" 

    If Not IsNull(Me.cboInterface) Then 
     strInterface = strInterface & " WHERE InterfaceName = " & Me.cboInterface 
    ElseIf Not IsNull(Me.cboServer) Then 
     strInterface = strInterface & " WHERE ServerName = " & Me.cboServer 
    ElseIf Not IsNull(Me.cboLocation) Then 
     strInterface = strInterface & " WHERE LocationName = " & Me.cboLocation 
    End If 

    strInterface = strInterface & " ORDER BY qryServerInterfaces.LocationName;" 

    Me.lstInterfaces.RowSource = strInterface 

    Me.lstInterfaces.Requery 

End Sub 

Private Sub EnableControls() 

    If IsNull(Me.cboLocation) Then 
     Me.cboServer = Null 
    End If 

    If IsNull(Me.cboServer) Then 
     Me.cboInterface = Null 
    End If 

    Me.cboServer.Enabled = (Not IsNull(Me.cboLocation)) 
    Me.cboInterface.Enabled = (Not IsNull(Me.cboServer)) 

End Sub 

Private Sub Form_Load() 
    EnableControls 

End Sub 

とこのようになります問い合わせ:

私はこのコードを得ました。私の問題は、もし私が "物"や "物"のような基準の下にあれば、私の質問は情報を表示するということです。私が "null"の下にすべてを置いていないなら、私のフォーム(下の図)は彼のリスト内に何も表示されません。

私の基準を「無効」にすると、私は障害や何かをしているというメッセージが表示されます。

誰がアップしているか知っていますか?前もって感謝します!同じ問題を抱えている人にとって

SELECT  tbl1Location.LocationName, 
      tbl2Server.ServerName, 
      tbl2Vlan.InterfaceName, 
      tbl2Vlan.VlanName, 
      tbl3IP.IPAddress, 
      tbl2Vlan.DefaultGatewayAddress 
FROM  ((tbl1Location INNER JOIN tbl2Server ON tbl1Location.LocationID = tbl2Server.LocationName) 
          INNER JOIN tbl2Vlan ON tbl1Location.LocationID = tbl2Vlan.LocationName) 
          INNER JOIN tbl3IP ON (tbl2Server.ServerID = tbl3IP.ServerName) 
              AND (tbl2Vlan.VlanID = tbl3IP.InterfaceName) 
WHERE  (
      ((tbl1Location.LocationName)=[Forms]![frmInterfaces]![cboLocation]) AND 
      ((tbl2Server.ServerName)=[Forms]![frmInterfaces]![cboServer]) AND 
      ((tbl2Vlan.InterfaceName)=[Forms]![frmInterfaces]![cboInterface]) 
      ) OR 
      (
      ((tbl2Server.ServerName)=[Forms]![frmInterfaces]![cboServer]) AND 
      ((tbl2Vlan.InterfaceName)=[Forms]![frmInterfaces]![cboInterface]) AND 
      ((([tbl1Location].[LocationName]) Like [Forms]![frmInterfaces]![cboLocation]) Is Null) 
      ) OR 
      (
      ((tbl1Location.LocationName)=[Forms]![frmInterfaces]![cboLocation]) AND 
      ((tbl2Vlan.InterfaceName)=[Forms]![frmInterfaces]![cboInterface]) AND 
      ((([tbl2Server].[ServerName]) Like [Forms]![frmInterfaces]![cboServer]) Is Null) 
      ) OR 
      (
      ((tbl2Vlan.InterfaceName)=[Forms]![frmInterfaces]![cboInterface]) AND 
      ((([tbl1Location].[LocationName]) Like [Forms]![frmInterfaces]![cboLocation]) Is Null) AND 
      ((([tbl2Server].[ServerName]) Like [Forms]![frmInterfaces]![cboServer]) Is Null) 
      ) OR 
      (
      ((tbl1Location.LocationName)=[Forms]![frmInterfaces]![cboLocation]) AND 
      ((tbl2Server.ServerName)=[Forms]![frmInterfaces]![cboServer]) AND 
      ((([tbl2Vlan].[InterfaceName]) Like [Forms]![frmInterfaces]![cboInterface]) Is Null) 
      ) OR 
      (
      ((tbl2Server.ServerName)=[Forms]![frmInterfaces]![cboServer]) AND 
      ((([tbl1Location].[LocationName]) Like [Forms]![frmInterfaces]![cboLocation]) Is Null) AND 
      ((([tbl2Vlan].[InterfaceName]) Like [Forms]![frmInterfaces]![cboInterface]) Is Null) 
      ) OR 
      (
      ((tbl1Location.LocationName)=[Forms]![frmInterfaces]![cboLocation]) AND 
      ((([tbl2Server].[ServerName]) Like [Forms]![frmInterfaces]![cboServer]) Is Null) AND 
      ((([tbl2Vlan].[InterfaceName]) Like [Forms]![frmInterfaces]![cboInterface]) Is Null) 
      ) OR 
      (
      ((([tbl1Location].[LocationName]) Like [Forms]![frmInterfaces]![cboLocation]) Is Null) AND 
      ((([tbl2Server].[ServerName]) Like [Forms]![frmInterfaces]![cboServer]) Is Null) AND 
      ((([tbl2Vlan].[InterfaceName]) Like [Forms]![frmInterfaces]![cboInterface]) Is Null) 
      ) 
+0

[3]:http://i.stack.imgur.com/1cvyN.png - エラーメッセージ –

+0

これは奇妙なクエリです。奇妙なエラーメッセージではありません。 SQLを表示し、コピー/貼り付けがあなたの質問に{}コードタグで囲まれたテキストであれば、見やすくなります。おそらく、それらの結合のいくつかを排除する方法があると思います。それらはほぼ円形に見えます。あなたはいくつかのサブクエリを構築しているかもしれません - そして、このクエリでそれらを結合してください – dbmitch

+0

私はそれを追加しました、クエリに行って、私が見た可視のコードのすべてを貼り付けコピー... –

答えて

0

あらゆる可能助けを事前に(

My Form

おかげで「SQLコード:!私はすでに2週間それにこだわっています:

私は古いクエリを削除して、新しいクエリに加えたすべての変更をデバッグすることで "修正"しました。

また、私は、任意の値を任意のリスト内に入れたい場合、クエリには値、適切なキーが含まれている必要があり、それはそれに関するものだということを学びました。

クエリ必要Me.mylist.RawSource = 'MYQUERY FROM SELECT firstValue.myQuery、secondValue.myQuery、thirdValue.myQuery':あなたはあなたのことで、リストはVBAコード内後であなたが表示されますどのように管理することができますデータ値とIDの両方を保持します。

関連する問題