ERRO EM CONSULTA

SANROMAN 24/09/2016 18:06:11
#467424
Boa Noite

Esta consulta está dando erro:


Private Sub mesRef()

Using con As SqlCeConnection = conectarDados()

con.Open()

Try
Dim strCom As String = [Ô]SELECT DATEPART(MONTH, Data) as mes [Ô] & _
[Ô]FROM tbReceita [Ô] & _
[Ô]WHERE DATEPART(MONTH, Data) = [ô][Ô] & Date.Now.Month & [Ô][ô][Ô]

Dim sqlCom As SqlCeCommand = New SqlCeCommand(strCom, con)
Dim dr As SqlCeDataReader

dr = sqlCom.ExecuteReader
dr.Read()

If dr.HasRows Then
txtMesRef.Text = dr([Ô]mes[Ô]).ToString
End If

Catch ex As Exception
MsgBox(ex.ToString)
Finally
con.Dispose()
End Try

End Using

End Sub


O mensagem de erro é a seguinte:

[Ô][txt-color=#e80000]O sql server compact não dará suporte a chamadas para a propriedade HasRows se o cursor subjacente não for rolhável.[Ô][/txt-color]

To perdidão, já tentei tudo que estava ao meu alcance e não consegui resolver isso.

Se alguém puder me ajudar, desde já agradeço.
XLEGENDARY 24/09/2016 19:20:44
#467425
ja tentou usar dr.read?
ja experimentou usar while?

uma coisa que vc pode fazer somente pra estética na sua query é você usar @ na frente da instrução sql ai você não precisa ficar colocando & _
pra quebrar linhas. Outra dica é, use StringBuilder da Classe Text do windows forms. é mais performático do que somente declarar a string pra conexões sql

retira o hasRows e coloca While dr.read pra ver
DS2T 24/09/2016 19:29:31
#467426
Resposta escolhida
Tente assim:

If dr.Read() Then
txtMesRef.Text = dr([Ô]mes[Ô]).ToString
End If
SANROMAN 24/09/2016 23:50:02
#467438
Valeu DS2T funcionou perfeitamente
Tópico encerrado , respostas não são mais permitidas