2017-12-19 18 views
0

누군가가이 코드를 도울 수 있습니까?VB .net datagridview 어디 datasource 저장 프로 시저 dsql 피벗

DECLARE @cols AS NVARCHAR(MAX) 
DECLARE @cale AS NVARCHAR(MAX) 
DECLARE @ini AS DATETIME 
DECLARE @fin AS DATETIME 

SET @ini = (SELECT MIN(VerAvv) FROM CalendariVer) 
SET @fin = (SELECT MAX(VerSca) FROM CalendariVer) 


SELECT @cols = STUFF((SELECT ',' + QUOTENAME(CONVERT(NVARCHAR(10), Data, 103)) 
       FROM Calendario WHERE Data BETWEEN CAST(@ini AS DATE) 
       AND CAST(@fin AS DATE) 
       GROUP BY Data 
       ORDER BY Data 
       FOR XML PATH(''),TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'') 


SET @cale = 'SELECT CalId, PiaId, PiaAcr, VerId, VerCod, Ver, Avvio, Chiusura, '[email protected]+' 
FROM   (SELECT dbo.CalendariVer.CalId, dbo.CalendariVer.PiaId, dbo.CalendariVer.PiaAcr, dbo.CalendariVer.VerId, dbo.CalendariVer.VerCod, dbo.CalendariVer.Ver, CONVERT(nvarchar(10), dbo.CalendariVer.VerAvv, 103) AS Avvio, 
       CONVERT(nvarchar(10), dbo.CalendariVer.VerSca, 103) AS Chiusura, CONVERT(NVARCHAR(5), dbo.CalendariVer.LezDal, 108) + '' - '' + CONVERT(NVARCHAR(5), dbo.CalendariVer.LezAl, 108) AS Orario, 
       CONVERT(nvarchar(10), dbo.Calendario.Data, 103) AS Data 
       FROM dbo.CalendariVer RIGHT OUTER JOIN 
         dbo.Calendario ON CAST(dbo.CalendariVer.Lez AS date) = dbo.Calendario.Data 
     WHERE CalID IS NOT NULL              
       GROUP BY dbo.CalendariVer.CalId, dbo.CalendariVer.PiaId, dbo.CalendariVer.PiaAcr, dbo.CalendariVer.VerId, dbo.CalendariVer.VerCod, dbo.CalendariVer.Ver, CONVERT(nvarchar(10), dbo.CalendariVer.VerAvv, 103), 
       CONVERT(nvarchar(10), dbo.CalendariVer.VerSca, 103), CONVERT(NVARCHAR(5), dbo.CalendariVer.LezDal, 108) + '' - '' + CONVERT(NVARCHAR(5), dbo.CalendariVer.LezAl, 108), CONVERT(nvarchar(10), 
       dbo.Calendario.Data, 103)) AS c 
      PIVOT (MAX(Orario) FOR Data IN ('[email protected]+')) AS p' 

EXEC (@cale) 

모든 작업 : 나는 개체의 목록을 반환하는 저장 프로 시저 일정에 합류했습니다.

Public Function Calendario_Ver() As DataTable 
    Dim cale As New DataTable() 

    Try 
     Acon() 
     Dim cal As New SqlCommand("CalendarioVer", con) 
     cal.CommandType = CommandType.StoredProcedure 
     Dim trova As New SqlDataAdapter(cal) 
     trova.Fill(cale) 
     Ccon() 
    Catch ex As Exception 
     Interaction.MsgBox(ex.ToString, MsgBoxStyle.Critical) 
    End Try 

    Return cale 
End Function 

을 그리고이 코드 DataGridView를 채우기 : 나는 기억 VB에서 함수했습니다 너무

Private Sub CaricaCalendario() 
    Try 
     With CalVerDataGridView 
      .Refresh() 
      .DataSource = Calendario_Ver() 
      .Columns(0).Visible = False 
      .Columns(1).Visible = False 
      .Columns(3).Visible = False 
      .Columns(2).HeaderText = "Piano" 
      .Columns(4).HeaderText = "Progetto" 
      .Columns(5).HeaderText = "Versione" 
     End With 
    Catch ex As Exception 
     Interaction.MsgBox(ex.ToString, MsgBoxStyle.Critical) 
    End Try 
End Sub 

모든 작업을하지만, 나는 열 piano, versione 등을하여 데이터 소스 또는 DataGridView를 필터링 할 수있는 방법 ver?

답변

0

일단 사용자가 DataTable을 얻은 후에는 그 데이터가 어떻게되는지가 부적절합니다. DataTableBindingSource에 바인딩하고 그리드에 바인딩합니다. 데이터를 필터링하려면 BindingSourceFilter 속성을 설정하십시오.

BindingSource없이 실제로하려면 테이블을 직접 눈금에 바인딩하고 의 DefaultView.RowFilter을 설정하십시오. 예를 들어

:

myBindingSource.DataSource = myDataTable 
myDataGridView.DataSource = myBindingSource 

myBindingSource.Filter = $"SomeColumn LIKE '%{myTextBox.Text}%'" 
+0

나는 DataGridView''에'BindingSource',하지만 아무것도 변화를 시도했다. – GCA

+0

그러면 잘못한 것입니다. 우리가 한 일을 우리에게 보여주지 않으면, 그 일이 무엇이 잘못되었는지 우리에게 말할 수 없습니다. – jmcilhinney

+0

나는 서브에서이 코드를 입력 : '공공 하위 SelezionePiani() 희미한 피아으로 새로운 BindingSource에 pia.DataSource = Calendario_Ver() CalVerDataGridView와 때 .refresh() .DataSource = PIA .Filter ("PiaId = '"& CalVerPiaComboBox.SelectedValue & "'") 끝으로 End Sub' – GCA