ERROR 3464?

TAMANINI 27/05/2005 09:37:05
#85425
Alguém poderia me explicar o motivo desse erro:
"Data type mismatch in criteria expression. (Error 3464)"
é quando estou salvando algo no BD e da uma queda de energia ou o computador é desligado/reiniciado na hora de salvar os dados tb?
Um dos motivos seria pela fato de eu não estar utilizando o begintrans e committrans ou ainda porque estou utilizando o componente data com DAO e na inserção utilizo .addnew em vez de um comando DML - "INSERT...", correto? Já vi alguns BD em acess no qual os campos ficam com as palavras "#error", este seria provocado na hora de estar inserindo os dados e acaba tendo uma queda de energia, mas não lembro se o erro era 3464 tb.
TRUHILLO 27/05/2005 10:25:19
#85439
Post o código que está causando o erro.

Com certeza o erro é pq vc está tentando colocar um valor String em um campo numérico, ou vice-versa.
TAMANINI 27/05/2005 11:03:41
#85457
Só tem um problema! O erro está acontecendo em um cliente e ele ficou de me enviar o BD, com isso não vai adiantar eu passar o meu código, o BD deve ter armazenado alguma sujeira quando o cliente desligou incorretamente.
LCSD 27/05/2005 11:07:56
#85460
Tamanini

A Descrição do Erro "Data type mismatch in criteria expression", indica que está usando tipos de dados incorretos, ou seja, onde deveria estar uma String foi fornecido um número ou qualquer outro tipo de troca de dados.

Reveja o seu código e analise se não deve alterar a SQL ou poste a String que forma a SQL aqui.
[s92]
TAMANINI 27/05/2005 11:13:24
#85461
Então o que poderia ser é que o aparelho eletrà'nico enviou uma string em vez de um número e acabou sendo armazenado em um dos campos do BD, e agora toda vez que o cliente tenta abrir o form gera esse erro quando vai buscar os dados que estão no BD.
LCSD 27/05/2005 11:15:22
#85462
Tamanini

Poste a String da SQL senão fica Impossível a solução!

Faça a validação, IsNumeric(), se não for, converta.

Se for uma String para converter para inteiro, use CInt() e por aí vai.
[s92]
WEBMASTER 27/05/2005 11:33:07
#85466
Tamanini

Já que a coisa tá lá no cliente, tem uma solução bem boba.
Pergunta pra ele se os caracteres aspas simples e aspas duplas estão no nome do produto, é bem provável que voce nao tratado essa situacao e o infeliz esteja tentando inserir algo com estes caracteres.
TAMANINI 27/05/2005 11:37:07
#85468
Segue abaixo o código no qual acontece o erro:

no form_load()
strSQLInstrucao = GetSetting("SetAparelhos", "SetInsrucao", "strSQLInicio", "")
If strSQLInstrucao = "" Then
Set DMCRsR = DMCData.OpenRecordset("SELECT * FROM DMCHistRun WHERE Run = " & _
False & " AND DMCNo <> 0 ORDER BY DMCNo, Right(AnoMesDia,7),Right(AnoMesDia,10), Hora")
lblFiltro.Caption = " Todos os Aparelhos "
Else
Set DMCRsR = DMCData.OpenRecordset(strSQLInstrucao)
Aparelho001 = GetSetting("SetAparelhos", "SetInsrucao", "Aparelho")
If (Aparelho001 = "ALL") Then
Aparelho001 = " Todos os Aparelhos filtrados "
Else
ApFiltro = Aparelho001
Aparelho001 = " Aparelho(s) de Nº(s) " & ApFiltro & " filtrado(s) "
End If
DataFim01 = GetSetting("SetAparelhos", "SetInsrucao", "DTFim")
DataIni01 = GetSetting("SetAparelhos", "SetInsrucao", "DTInicio")
DataMes01 = GetSetting("SetAparelhos", "SetInsrucao", "Mes")
If (DataIni01 = "" And DataMes01 = "") Then
lblFiltro.Caption = Aparelho001 & ". "
ElseIf (DataMes01 = "") Then
lblFiltro.Caption = Aparelho001 & "entre " & DataIni01 & " e " & DataFim01 & " . "
Else
lblFiltro.Caption = Aparelho001 & "durante o(s) último(s) " & DataMes01 & " mês(es) . "
End If
End If
If DMCRsR.RecordCount > 0 Then DMCRsR.MoveLast
TdbH = DMCRsR.RecordCount
Call SetListaFinal


---

sub setListaFinal
If DMCRsR.RecordCount > 0 Then
DMCRsR.MoveFirst
Do While Not DMCRsR.EOF
With Me.msfFinal
.Row = .Rows - 1
.RowHeight(.Row) = 225
.Rows = .Rows + 1
TempNap = DMCRsR.Fields("DMCNo")
'NSec = DMCRsR.Fields("NSec")
.Col = 0: .CellAlignment = 4: .Text = TempNap
.Col = 1: .CellAlignment = 4: .Text = DMCRsR.Fields("NLeit")
.Col = 2: .CellAlignment = 1: .Text = DMCRsR.Fields("Data")
Ano = Right(DMCRsR.Fields("AnoMesDia"), 10) & " à s "
Dia = Left(DMCRsR.Fields("Hora"), 2) & ":" & Mid(DMCRsR.Fields("Hora"), 12, 2)
.Col = 3: .CellAlignment = 1: .Text = Ano & Dia
SrTp0 = DMCRsR.Fields("Descricao")
Tam0 = Len(SrTp0)
Tam1 = InStr(1, SrTp0, " - TmP =")
If Tam1 Then
SrTp1 = Left(SrTp0, (Tam1 - 1)) 'Nome da Descrição
SrTp2 = Right(SrTp0, (Tam0 - Tam1))
Tam1 = Len(SrTp2)
SrTp2 = Right(SrTp2, (Tam1 - 7))
Else
SrTp1 = SrTp0
SrTp2 = ""
End If
.Col = 4: .CellAlignment = 1: .Text = SrTp1
.Col = 5: .CellAlignment = 4: .Text = DMCRsR.Fields("NInt")
.Col = 6: .CellAlignment = 1: .Text = DMCRsR.Fields("DMCId")
.Col = 7: .CellAlignment = 1: .Text = DMCRsR.Fields("ProgID")
End With
DMCRsR.MoveNext
Loop
DMCRsR.Close
WEBMASTER 27/05/2005 11:42:52
#85470
Daria para voce gerar um debug.print dessa instrução:

    Set DMCRsR = DMCData.OpenRecordset("SELECT * FROM DMCHistRun WHERE Run = " & _ False & " AND DMCNo <> 0 ORDER BY DMCNo, Right(AnoMesDia,7),Right(AnoMesDia,10), Hora") 
TAMANINI 27/05/2005 11:49:38
#85472
Webmaster:
Na hora de preencher o textbox que será armazenado no campo descrição estou fazendo tratamento, o usuário não pode digitar aspas simples e nem aspas duplas, o que está passando são:
~;.,+*
Mas eu fiz um teste aqui colocando esse caracteres acima e não tive problema no recebimento dos dados do aparelho. O jeito é esperar até segunda para saber o que está acontecendo.
Mas assim que eu resolver ou não resolver postarei qual foi a causa. é a 1Âê vez que acontece esse erro.
TAMANINI 27/05/2005 17:01:04
#85550
O erro está acontecendo nesta linha, logo após o else do form_load:
Set DMCRsR = DMCData.OpenRecordset(strSQLInstrucao)

No qual strSQLInstrução possui a seguinte string:
SELECT * FROM DMCHistRun WHERE Run = False AND DMCNo <> 0 AND CDate(Right([DMCHistRun]![AnoMesDia], 10)) BETWEEN #04/27/2005# AND #05/27/2005# ORDER BY DMCNo,Right(AnoMesDia,7),Right(AnoMesDia,10), Hora

Eu quero que traga todos os históricos de todos aparelhos do último mês.
Detalhe, se tiver poucos históricos não gera erro, como neste tenho 710 registros acaba gerando esse erro!
Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas