RUN-TIME ERROR 13 TIPO INCOMPATIVEL.

ANDRERABELOFELI 13/08/2010 14:41:40
#350177
pessoal estou com um grande problema que nao estou conseguindo resolver de jeito nenhum se alguem puder me ajudar... agradeço muito ai vai a minha rotina.

Public bancodedados As Database
Public banco As Recordset

Private Sub cmdvalidaregistro_Click()
Set banco = bancodedados.OpenRecordset([Ô]select nome from funcionario where registro =[Ô] & CDbl(txtnumeroregistro.Text))
If banco.RecordCount = 0 Then
MsgBox [Ô]registro nao encontrado[Ô], vbInformation + vbOKOnly, [Ô]..:relogio ponto by andre[Ô]
Exit Sub
End If
txtnome.Text = banco([Ô]nome[Ô])
End Sub

Private Sub Form_load()
Dim cnn As ADODB.Connection
Dim rs As Recordset
Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset

rs.CursorLocation = adUseClient

cnn.Open [Ô]provider=microsoft.jet.oledb.3.51;data source=C:\Documents and Settings\andre\Desktop\pontoeletronico\funcionario.mdb;[Ô]
rs.Open [Ô]select nome from funcionario where registro=[ô][Ô] & txtnumeroregistro.Text & [Ô][ô][Ô], cnn, adOpenStatic

If rs.RecordCount > 0 Then
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
End If
Set bancodedados = OpenDatabase(App.Path & [Ô]\funcionario.mdb[Ô])
End Sub

Private Sub Form_Unload(Cancel As Integer)
banco.Close
bancodedados.Close


End Sub

Private Sub txtnumeroregistro_KeyPress(KeyAscii As Integer)
If InStr(1, [Ô]1234567890,[Ô] & Chr(8), Chr(KeyAscii)) = 0 Then KeyAscii = 0


End Sub
o erro acontece logo na primeira linha da rotina..
se alguem souber como resolver isto serei muito grato...
GERARDA 13/08/2010 14:55:35
#350178
verifica em seu banco de dados qual a tipo do campo registro
se for texto
é so colocar aspas
Set banco = bancodedados.OpenRecordset([Ô]select nome from funcionario where registro =[ô][Ô] & CDbl(txtnumeroregistro.Text)) & [Ô] [ô] [Ô]
que da certo
ANDRERABELOFELI 13/08/2010 18:11:24
#350212
mesmo com as com as aspas nao da certo ja mudei meu campo registro para double tambem nao deu certo se alguem puder me ajudar por favor,

a unica coisa que quero com esta rotina e que ao usuario digitar seu registro correspondente em uma text box, e ao programa fazer a consulta analisar o campo nome do bd a adiciona-lo em outra textbox, se estiver no caminho certo alguem me ajude com este erro, se nao me deeuma luz de como fazer isto..
obrigado a todos...
MARCELOFAZAN 13/08/2010 19:33:50
#350217
Resposta escolhida
Ola amigo cole no seu form e ve se funciona
apertando ENTER no txtnumreg

Private Sub txtnumeroregistro_KeyPress(KeyAscii As Integer)
Dim rs As New ADODB.Recordset
If KeyAscii = 13 Then
rs.Open [Ô]select nome from funcionario where id=[Ô] & txtnumeroregistro.Text, cnn
If rs.EOF Then
txtnome.Text = [Ô][Ô]
MsgBox [Ô]Esse Funcionario Não Existe ![Ô]
Else
txtnome.Text = rs([Ô]nome[Ô])
End If
End If
End Sub

Abraços
Marcelo Fazan
GERARDA 13/08/2010 19:47:49
#350219
Public cnn As ADODB.Connection
Public rs As Recordset
Private Sub cmdvalidaregistro_Click()
If rs.State = 1 Then rs.Close
rs.Open [Ô]select nome from funcionario where registro=[ô][Ô] & txtnumeroregistro.Text & [Ô][ô][Ô], cnn, adOpenStatic
If rs.RecordCount = 0 Then
MsgBox [Ô]funcionario nao encontrado[Ô]
txtnome.Text = [Ô][Ô]
Else
txtnome.Text = rs([Ô]nome[Ô])
End If
End Sub

Private Sub Form_load()
Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
cnn.Open [Ô]provider=microsoft.jet.oledb.3.51;data source=[Ô] & App.Path & [Ô]/funcionario.mdb;[Ô]
End Sub
Private Sub Form_Unload(Cancel As Integer)
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
End Sub

Private Sub txtnumeroregistro_KeyPress(KeyAscii As Integer)
If InStr(1, [Ô]1234567890,[Ô] & Chr(8), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

assim funciona


é que vc misturou ado com dao

e ai ficou tudo confuso
ANDRERABELOFELI 13/08/2010 22:25:52
#350241
mesmo com todas essas dicas o erro acontece sempre na intruçao
RS.OPEN do cmdvalidaregistro.
GERARDA 13/08/2010 22:38:51
#350242
deve estar com erro em outra parrte
o exemplo anexo é o que postei para vc
MARCELOFAZAN 13/08/2010 22:49:51
#350244
ola amigo
rs.Open [Ô]select nome from funcionario where registro=[ô][Ô] & txtnumeroregistro.Text & [Ô][ô][Ô], cnn, adOpenStatic

coloquei como id anteriormente essa linha [Ô]COLOQUEI [Ô] ID
rs.Open [Ô]select nome from funcionario where id =[Ô] & txtnumeroregistro.Text, cnn
agora corrigi seria [Ô]REGISTRO [Ô]
rs.Open [Ô]select nome from funcionario where registro=[Ô] & txtnumeroregistro.Text, cnn

tenta novamente , colai

Private Sub txtnumeroregistro_KeyPress(KeyAscii As Integer)
Dim rs As New ADODB.Recordset
If KeyAscii = 13 Then
rs.Open [Ô]select nome from funcionario where registro=[Ô] & txtnumeroregistro.Text, cnn
If rs.EOF Then
txtnome.Text = [Ô][Ô]
MsgBox [Ô]Esse Funcionario Não Existe ![Ô]
Else
txtnome.Text = rs([Ô]nome[Ô])
End If
End If
End Sub

Abs
Marcelo Fazan
ANDRERABELOFELI 14/08/2010 18:23:24
#350280
bem pessoal depois de muita dor de cabeça, e com uma ajuda do nosso amigo, [txt-color=#e80000] Marcelo Fazam, [/txt-color][txt-color=#080808] consegui resolver o meu problema, e ai vai a soluçao para todos verificarem como ficou. [/txt-color]
um projeto simples mas que me deu muita dor de cabeça.

simplismente fazer o retorno de uma consulta em uma textbox.


bem pessoal amanha estarei encerrando o topico.
GERARDA 14/08/2010 21:22:59
#350285
agora me deixou preocupado
marcelo fazam por favor me aponte o erro nesse codigo por favor

Public cnn As ADODB.Connection
Public rs As Recordset
Private Sub cmdvalidaregistro_Click()
If rs.State = 1 Then rs.Close
rs.Open [Ô]select nome from funcionario where registro=[ô][Ô] & txtnumeroregistro.Text & [Ô][ô][Ô], cnn, adOpenStatic
If rs.RecordCount = 0 Then
MsgBox [Ô]funcionario nao encontrado[Ô]
txtnome.Text = [Ô][Ô]
Else
txtnome.Text = rs([Ô]nome[Ô])
End If
End Sub

Private Sub Form_load()
Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
cnn.Open [Ô]provider=microsoft.jet.oledb.3.51;data source=[Ô] & App.Path & [Ô]/funcionario.mdb;[Ô]
End Sub
Private Sub Form_Unload(Cancel As Integer)
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
End Sub

Private Sub txtnumeroregistro_KeyPress(KeyAscii As Integer)
If InStr(1, [Ô]1234567890,[Ô] & Chr(8), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

obrigado
MARCELOFAZAN 14/08/2010 22:33:44
#350288
na parte que vejo o problema seria

Citação:

If rs.RecordCount = 0 Then



voce esta contando numero de registros Count

Citação:

If rs.EOF Then



Nesse comando quer dizer [Ô] ate fim de arquivo[Ô]

algo assim .... do restante parece ta certo

Vlw
Abs

Marcelo Fazan
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas