Jump to content

Como Substituir o DatePart num Select


Chamuanza

Recommended Posts

Bem Aja Pessoal

Perante o codigo que apresento como poderei atingir o objectivo pretendido, uma vez que segundo já disseram no forum o DatePart(DateInterval.Month, DataMensal) não funciona com o select.

No entanto se puser no parametro uma data já funciona o select.

O que pretendo é seleccionar todos os nomes que façam anos no mês presente

Dim DataMensal As Date = Now

        TextBox2.Text = DatePart(DateInterval.Month, DataMensal)

        Try

            Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\AgendaAnosVB6\AgendaAnosNova\AgendaAnos.mdb"

            ' Inicia uma ligação à base de dados 
            Using connection As New OleDbConnection(connString)

                ' Select Statement que irá mostrar todos os registos
                Dim SQL As String = "Select Nome, Sobrenome, Endereco, Nascimento " & _
                         "From Amigos " & _
                         "Where Nascimento = ?"


                ' Define o DataAdapter e os parâmetros. O DataAdapter guarda a ligação, não 
                ' sendo necessário abrir com o comando connection.Open() 
                Dim da As New OleDbDataAdapter(SQL, connection)
              
                  'Assim não funciona
                  'Dá erro "tipo de dados incorreto na expressão de criterios"
                  da.SelectCommand.Parameters.Add("Nascimento", OleDbType.VarChar).Value = DatePart(DateInterval.Month, DataMensal)


               
'Colocando uma data funciona bem  
'da.SelectCommand.Parameters.Add("Nascimento", OleDbType.Char).Value = "1946-03-30"



                ' Preenche o Dataset com os valores da base de dados 
                Dim ds As New DataSet
                da.Fill(ds)

                ' Preenche a combobox 
                With Me.AmigosDataGridView
                                       .DataSource = ds.Tables(0).DefaultView

                 End With

                ' Insere um novo item geral na posição 0 
                ' com uma descrição geral a indicar o tipo de lista 
                Dim dr As DataRow
                dr = ds.Tables(0).NewRow
              
                         End Using

        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try
Link to comment
Share on other sites

O q estás a fazer é comparar uma data com um inteiro, n pode ser.

Ou trocas o Nascimento por: Month(Nascimento)

Month() é uma função de sql server, se tiveres a usar outro motor tens q procurar uma função com o mesmo efeito.

Ou então comparas data com data e usas um between na query, mas a 1ª solução parece-me melhor.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.