- Katılım
- 2 Mart 2005
- Mesajlar
- 2,960
- Excel Vers. ve Dili
-
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
OWC11 dll e ait SpreadSheet.WORKSHEETS(1) tanımlama problemi ve copyfromrecordset özelliği
Aşağıdaki kodlamada adob sorgusunu spreadsheet nesnesinin bir indexnolu sayfasına vermekteyim.
kısaltma amacıyla nesneyi Dim sprCsf As Worksheet şeklinde tanımlayınca Set sprCsf = sprOkumalar.Worksheets(1) satırında type msitimach 13 hatası veriyor yani nesne bulunamadı tanımlamadan kullanabiliyorum, object olarak tanımlayınca nesnenin özellikleri açılan kutudan gelmiyor, bir çözümü var mı?
Ayrıca Spreadsheetnesnesinde normal çalışma sayfasında bulunan CopyFromRecordset özelliği yok yada kullanımı farklımı, denediğimde sadece kayıda ait ilk başlık bilgisini verdi.
Aşağıdaki kodlamada adob sorgusunu spreadsheet nesnesinin bir indexnolu sayfasına vermekteyim.
kısaltma amacıyla nesneyi Dim sprCsf As Worksheet şeklinde tanımlayınca Set sprCsf = sprOkumalar.Worksheets(1) satırında type msitimach 13 hatası veriyor yani nesne bulunamadı tanımlamadan kullanabiliyorum, object olarak tanımlayınca nesnenin özellikleri açılan kutudan gelmiyor, bir çözümü var mı?
Ayrıca Spreadsheetnesnesinde normal çalışma sayfasında bulunan CopyFromRecordset özelliği yok yada kullanımı farklımı, denediğimde sadece kayıda ait ilk başlık bilgisini verdi.
Kod:
With CSfOzet
.Cells.Clear
.Range(.Cells(1, 1), .Cells(1, 3)).Value = Array("Sayac_No", "Adi_Soyadi", "Mevkii")
.Range("a2").CopyFromRecordset adbKset
End With
Kod:
Sub adbKset_Tarihler_Aç()
Set CSfData = CKtp_Bu.Sheets("DATA") 'Verilerin alınacağı sayfa.
Dim sqlFrom$, sqlBasl$, sqlSorg$, sqlSatr$, sqlGrup$
[COLOR=Red] Dim sprCsf As Worksheet[/COLOR]
' Dim sprCsf As Spreadsheet.Worksheet
'1\Adob RecordSet Sorgulama Kriterlerini hazırlıyoruz...
sqlBasl = "SELECT DISTINCT " & "Tarihi, Aktif_Değeri, Reaktif_Değeri, Kapasitif_Değeri, Aciklama"
sqlFrom = " FROM " & "[" & CSfData.Name & "$" & "A2:H1800" & "]"
sqlSorg = " WHERE " & "Sayac_No = " & Me.ComboBox1.Column(0) 'Sayaç Numarası, Combobox1'e eşit olan kayıtlar
sqlSorg = sqlSorg & " AND UCase(Adi_Soyadi) Like '" & UCase(Me.TextBox1.Text) & "'" ' ve Adı soyadı, textbox1'i içeren kayıtlar
sqlSorg = sqlSorg & " AND Tarihi IS NOT NULL"
sqlGrup = " GROUP BY " & "Sayac_No, Adi_Soyadi, Mevkii, Tarihi, Aktif_Değeri,"
sqlGrup = sqlGrup & " Reaktif_Değeri, Kapasitif_Değeri, Aciklama"
sqlOrdr = " ORDER BY Tarihi DESC"
sqlSatr = sqlBasl & sqlFrom & sqlSorg & sqlGrup & sqlOrdr
'1\Adob RecordSet Sorgulamasını başlatıyoruz...
If Err = 0 Then
Set adbKset = CreateObject("ADODB.Recordset")
With adbKset
.ActiveConnection = adbBagl
.CursorLocation = adUseServer
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = sqlSatr
.Open
'***********************************************************************
Label15.Caption = Space(5) & .RecordCount & " Adet Okuma Kaydı bulundu"
'2\Spreadsheet Nesnesinin 1 nolu çalışma sayfasını Sorgu Sonuçları için hazırlıyoruz.
Set sprCsf = sprOkumalar.Worksheets(1)
With sprCsf
.Cells.Clear
With .Columns("A")
.HorizontalAlignment = xlRight
.ColumnWidth = 10
.NumberFormat = "dd/mm/yyyy;@"
End With
With .Columns("B:D")
.HorizontalAlignment = xlRight
.ColumnWidth = 12
.NumberFormat = "#,##0.0000"
End With
With .Columns("E")
.HorizontalAlignment = xlLeft
.ColumnWidth = 50
End With
With .Rows(1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.RowHeight = 25
End With
End With
'1\\Bulunan Kayıt Sayısı 0 dan fazla ise...
If .RecordCount > 0 Then
'1\\\Sorgu Başlıklarını 1. satıra yazıyoruz.
For fldCount = 0 To .Fields.Count - 1
intIRow = intIRow + 1
sprCsf.Cells(1, intIRow).Value = Replace(.Fields(fldCount).Name, "_", " ")
Next
'1\\\Sorgu sonuçlarını sprCsf'ye 2. satırdan itibaren yazıyoruz.
[COLOR=Red] sat = 1: .MoveFirst
For i = 1 To .RecordCount
sprCsf.Cells(sat + i, 1).Value = .Fields(0)
sprCsf.Cells(sat + i, 2).Value = .Fields(1)
sprCsf.Cells(sat + i, 3).Value = .Fields(2)
sprCsf.Cells(sat + i, 4).Value = .Fields(3)
sprCsf.Cells(sat + i, 5).Value = .Fields(4)
.MoveNext
Next i
.MoveFirst[/COLOR]
End If '.RecordCount > 0 Then
End With
Else
MsgBox "Bağlantı Hatası Kontrol Ediniz", vbInformation, "Bilgi"
End If
'1\Adob RecordSet Sorgulamasını sonlandırıyoruz.
With adbKset
If CBool(.State And adStateOpen) = True Then .Close: Set adbKset = Nothing
End With
End Sub