64 bit te ADODB ile veri çekerken type mismatch hatası

Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Bu günlerde kendi bilgisayarımda ofice 2010 32 bit yüklü. İşyerinde bazı bilgisayarlarda 64 bit yüklü kodlarımı çalıştırırken diğer makinelerde hata veriyor.
tam olarak ne fark vardır ve bu hataları nasıl düzeltirim genel itibari ile.

2- sql den veri çekip raporlarımı yaptığım programlarım vardı. Bu SQL den veri çekerken

Kod:
Public SQLCON As New ADODB.Connection
Public tRid
Kod:
Bağlantı için 

Public Sub Main()

Dim IP As String
Dim SERVER As String
Dim DATA As String
Dim USER As String
Dim PASSWORD As String

IP = Sheets("parametreler").TxtIp.Text
SERVER = Sheets("parametreler").TxtServer.Text
DATA = Sheets("parametreler").TxtData.Text
USER = Sheets("parametreler").TxtUser.Text
PASSWORD = Sheets("parametreler").TxtPassword.Text

SQLCON.ConnectionTimeout = 120 ' Time out for the connection
SQLCON.Provider = "sqloledb"   ' OLEDB Providers
SQLCON.Properties("Network Address").Value = IP ' set the ip address of your sql server"
SQLCON.CommandTimeout = 30 ' set timeout for 3 minutes
SQLCON.Properties("Data Source").Value = SERVER
SQLCON.Properties("Initial Catalog").Value = DATA
SQLCON.Properties("User ID").Value = USER
SQLCON.Properties("Password").Value = PASSWORD
SQLCON.CursorLocation = adUseClient



End Sub

Kod:
'fatura bilgilerini fiş nodan arar bulur getirir

Range("A1").Value = "xxxxxx 19/05/2010"



Dim FISNO As String
Dim FISYIL As String
Dim FATNO As String
Dim MLZ_KOD As String

Dim SQLText As String
Dim i As Integer


Dim RST As New ADODB.Recordset


Call Main
DoEvents
SQLCON.Open


MLZ_KOD = Range("C3")
If MLZ_KOD = "" Then Exit Sub



SQLText = "SELECT eeeDOS_TAR,EEEDOS_ISL_DEP,EEEDOS_NUM, EEEDOS_GAR,EEEDOS_FOL,EEEDOS_ONUM, EEEDOS_MKOD, EEEDOS_ACK, EEEDOS_ODE_MIK, EEEDOS_NTLL,EEEDOS_GZAM FROM EEEDOS  " & vbCrLf

SQLText = SQLText & "where EEEDOSONUM ='" + MLZ_KOD + "' AND " & vbCrLf
SQLText = SQLText & "EEEDOSTAR between '2012-07-15' and '2012-07-22' AND " & vbCrLf
SQLText = SQLText & " EEEDOSODMIK <> '0' " & vbCrLf
SQLText = SQLText & "ORDER BY EEEDOSTAR " & vbCrLf





Set RST.DataSource = SQLCON.Execute(SQLText)
Range("B6:J6").Select
Selection.ClearContents
Range("A10:J280").ClearContents




' fiş no olup olmadığı kontrol ediliyor.
Dim sayyy As String


sayyy = RST.RecordCount

If RST.RecordCount = 0 Then

MsgBox ("Fiş no yok. Lüfen yeni fiş no giriniz.")
Range("C3").Select

RST.Close
SQLCON.Close

Exit Sub
Else

'fiş no varsa buradan devam ediyor.

Do Until RST.EOF
For i = 1 To [B][U]RST.RecordCount Step 1[/U][/B]
Cells(i + 8, 2) = RST.Fields(0)
Cells(i + 8, 3) = RST.Fields(1)
Cells(i + 8, 4) = RST.Fields(2)
Cells(i + 8, 5) = RST.Fields(3)
Cells(i + 8, 6) = RST.Fields(4)
Cells(i + 8, 7) = RST.Fields(5)
Cells(i + 8, 8) = RST.Fields(6)
Cells(i + 8, 9) = RST.Fields(7)
Cells(i + 8, 10) = RST.Fields(8)
Cells(i + 8, 11) = RST.Fields(9)
Cells(i + 8, 12) = RST.Fields(10)
'Label1.Caption = "% " & Round(i / RST.RecordCount * 100, 0)

RST.MoveNext

Next i
Loop

RST.Close

SQLCON.Close





Range("C3").Select


End If
End Sub

RST.RecordCount Step 1
Burada type mismatch hatası veriyor internetten baktığım kadarıyla 64 bitten kaynaklanan bir hata olduğunu gördüm ama nasıl yapacağımı bilmedim.
ADO ile 64 bitten bağlanırken farklı işler mi yapmak gerekiyor.
Bilen arkadaşlardan rica etsem.

Saygılarımla.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
this issue is actually caused by a bug in earlier excels. there is a hotfix out there. HotFix

I develop some macros on office 16, but when I do UAT on previous versions, it fails, a quick easy solution for this is simply to cast the RecordCount

rst = SomeRecordset
dim rstCount as Long
rstCount = CLng(rst.RecordCount)
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bu hatayı aldığınızda
sayyy =RST.RecordCOunt
satırındaki sayyy değişkeni hangi değeri almış?
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
u hatayı aldığınızda
sayyy =RST.RecordCOunt
satırındaki sayyy değişkeni hangi değeri almış?
dim rst as long
proplemi Clng(rst.recordcount) yaparak düzelttim.
 
Üst