Excel Hücresinden MSQUERY e Tarih Parametresi okutturmak için Yardım gerekli

Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
Merhabalar ; Bir kaç gün önce benzer bir konunun devamına sorumu (sorunumu) eklemiştim , henüz bir cevap alamadığımdan konu genel olarak cevaplandığından benim sorumun dikkat çekmediğini düşündüğümden yeni konu açmak zorunda hissettim kendimi , çünkü bu konuda cevap alamadığım sürece uygulamamı geliştiremiyor ve kaldığım noktada hala beklemek zorunda kalıyorum....ilgilerinizi bekliyorum....

Hocam ; Mükemmel bir konuya temas ettiğiniz için teşekkür ederim...Fakat ne kadar uğraştımsa da EXCEL Hücresinden MSQUERY içerisine TARİH formatını yerleştiremedim....SYNTAX ERROR veriyor sürekli....

Kod aşağıdaki gibidir...


SELECT
LG_086_CLCARD.CODE AS CH_Kodu,
LG_086_CLCARD.DEFINITION_ AS Ünvanı,
SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) AS TUTAR,
SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS [Toplam Maliyet],
SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) - SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS KAR
FROM
LG_086_CLCARD INNER JOIN LG_086_01_INVOICE ON LG_086_CLCARD.LOGICALREF = LG_086_01_INVOICE.CLIENTREF INNER JOIN LG_086_01_STLINE ON LG_086_01_INVOICE.LOGICALREF = LG_086_01_STLINE.INVOICEREF WHERE (LG_086_01_INVOICE.DATE_ = CONVERT(DATETIME, '2008-02-04 00:00:00', 102)) AND (LG_086_01_INVOICE.TRCODE = 8) AND (LG_086_01_INVOICE.CANCELLED = 0) AND (LG_086_01_STLINE.LINETYPE = 0)
GROUP BY LG_086_CLCARD.CODE, LG_086_CLCARD.DEFINITION_
ORDER BY LG_086_CLCARD.CODE

H5 hücresinde 04.02.2008 bilgisini girdiğimde Sorgunun çalışmasını istiyorum...tabiki önceki günleri ve sonraki günleride gidrdiğimde SQL kodunun H5 hücresine girdiğim TARİHİ algılaması gerekir , şimdiden yardımlarınız için teşekkürederim....

Bu arada , yukarıdaki SQL Kodu LOGO veritabanında Malzeme Satış Karlılıklarını görmeye yarayan koddur...Amacım Günlük Satış Karlılıkların ( Fon Maliyeti Hariç) görebilmek , gösterebilmektir...

Konu ile ilgilisi yok ama , Karlılıklıların görülebilmesi için HER GÜN COST çalıştırılması gerekir ve ancak bir gün öncesinin KARLILIĞINI görebilirsiniz , LSU arkadaşlara duyurulur :)

Kolay gelsin , iyi çalışmalar...
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
USERFORM um şu şekilde bekliyor
 
Katılım
15 Ocak 2007
Mesajlar
791
Excel Vers. ve Dili
2003 excel visual basic
dostum SQL deyiminde yer alan tarih değerini ='den sonra değeri silip şu şekilde değiştirebilirsin yalnız bunu VBA ile birleştirmen gerekiyor
='den sonra " & [H5] & " daha sonra kodlara devam edebilirsin...
 
Katılım
10 Şubat 2008
Mesajlar
11
Excel Vers. ve Dili
xp
benimde böle bi sıkıntım var
bi hücreye verdiğim tarih aralıgındaki satışları almak istiyorum
sizin yaptıgınız excelde sorgu düzenle kısmından tarih alanına yazdım ama syntax error date time converting diyor

sql kodumda şu

SELECT LG_002_02_STLINE.STOCKREF, LG_002_ITEMS.CODE, LG_002_ITEMS.NAME, LG_002_ITMUNITA.BARCODE,
SUM((CASE LG_002_02_STLINE.TRCODE WHEN 7 THEN LG_002_02_STLINE.AMOUNT ELSE 0 END)
- (CASE LG_002_02_STLINE.TRCODE WHEN 2 THEN LG_002_02_STLINE.AMOUNT ELSE 0 END)) AS SATISMIKTAR,
SUM((CASE LG_002_02_STLINE.TRCODE WHEN 7 THEN (LG_002_02_STLINE.VATMATRAH + LG_002_02_STLINE.VATAMNT) ELSE 0 END)
- (CASE LG_002_02_STLINE.TRCODE WHEN 2 THEN (LG_002_02_STLINE.VATMATRAH + LG_002_02_STLINE.VATAMNT) ELSE 0 END))
AS SATISTUTAR
FROM LG_002_02_STLINE WITH (INDEX (I002_02_STLINE_I2)) INNER JOIN
LG_002_ITEMS ON LG_002_02_STLINE.STOCKREF = LG_002_ITEMS.LOGICALREF INNER JOIN
LG_002_ITMUNITA ON LG_002_ITEMS.LOGICALREF = LG_002_ITMUNITA.ITEMREF
WHERE (LG_002_ITMUNITA.LINENR = 1) AND (LG_002_02_STLINE.DATE_ BETWEEN CONVERT(DATETIME, '2008-2-9', 102) AND CONVERT(DATETIME,
'2008-2-9', 102)) AND (LG_002_02_STLINE.TRCODE = 7 OR
LG_002_02_STLINE.TRCODE = 2) AND (LG_002_02_STLINE.SOURCEINDEX = 1)
GROUP BY LG_002_ITEMS.CODE, LG_002_ITEMS.NAME, LG_002_ITMUNITA.BARCODE, LG_002_ITEMS.STGRPCODE, LG_002_ITEMS.SPECODE,
LG_002_02_STLINE.STOCKREF
ORDER BY LG_002_ITEMS.NAME
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
Belirttiginiz sekilde kodu degistirdigimde asagidaki gibi hata aliyorum

dostum SQL deyiminde yer alan tarih değerini ='den sonra değeri silip şu şekilde değiştirebilirsin yalnız bunu VBA ile birleştirmen gerekiyor
='den sonra " & [H5] & " daha sonra kodlara devam edebilirsin...




Belirttiginiz sekilde kodu degistirdigimde asagidaki gibi hata aliyorum
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
Değişik bir şekilde daha denedim bu sefer de daha farklı bir hata aldım

dostum SQL deyiminde yer alan tarih değerini ='den sonra değeri silip şu şekilde değiştirebilirsin yalnız bunu VBA ile birleştirmen gerekiyor
='den sonra " & [H5] & " daha sonra kodlara devam edebilirsin...

Değişik bir şekilde daha denedim bu sefer de daha farklı bir hata aldım

Önce MS QUERY içerisinde düzeltmeye çalıştım...Sanırım Direkt VBZA içerisinde düzeltmek gerekcek....

Size ; VBA de oluşturmuş olduğum MAKRO lu MSQUERY li kodumu da veriyorum...Bu kodun içerisine "H5" hücresinden tarih kriterini PARAMETRE olarak göstermem gerekiyor....

Sub Gunluk_KAR_MAKRO_01()
'
' Gunluk_KAR_MAKRO_01 Makro
' Makro ERSOY tarafından 08.02.2008 tarihinde kaydedildi.
'

'
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=CIRO_DSN;Description=CIRO_DSN;APP=Microsoft Office 2003;WSID=LSUERSOY;DATABASE=NORMPVC;LANGUAGE=Türkçe;Trusted_Connection=Y" _
), Array("es;Regional=Yes")), Destination:=Range("A2"))
.CommandText = Array( _
"SELECT LG_086_CLCARD.CODE AS CH_Kodu, LG_086_CLCARD.DEFINITION_ AS Ünvanı, SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) AS TUTAR, SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE" _
, _
".OUTCOST) AS [Toplam Maliyet], SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) - SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS KAR FROM LG_086_CLCARD INNER JOIN " _
, _
" LG_086_01_INVOICE ON LG_086_CLCARD.LOGICALREF = LG_086_01_INVOICE.CLIENTREF INNER JOIN LG_086_01_STLINE ON LG_086_01_INVOICE.LOGICALREF = LG_086_01_STLINE" _
, _
".INVOICEREF WHERE (LG_086_01_INVOICE.DATE_ = CONVERT(DATETIME, '2008-02-04 00:00:00', 102)) AND (LG_086_01_INVOICE.TRCODE = 8) AND (LG_086_01_INVOICE.CANCELLED = 0) AND (L" _
, _
"G_086_01_STLINE.LINETYPE = 0) GROUP BY LG_086_CLCARD.CODE, LG_086_CLCARD.DEFINITION_ ORDER BY LG_086_CLCARD.CODE " _
)
.Name = "CIRO_DSN_Günlük_KARLILIK"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False

End With
End Sub


Private Sub CommandButton1_Click()
Gunluk_KAR_MAKRO_01
End Sub

 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

Aşağıdaki şekilde deneyiniz.

Kod:
Sub Gunluk_KAR_MAKRO_01()
If IsDate(Cells(5, "H")) Then
    [B][COLOR=red]tarih[/COLOR][/B] = Year(Cells(5, "H")) & "-" & Format(Month(Cells(5, "H")), "00") & "-" & Format(Day(Cells(5, "H")), "00")
    With ActiveSheet.QueryTables.Add(Connection:=Array( _
                                                 Array("ODBC;" _
                                                     & "DSN=CIRO_DSN;" _
                                                     & "Description=CIRO_DSN;" _
                                                     & "APP=Micros oft Office 2003;" _
                                                     & "WSID=LSUERSOY" _
                                                     & "DATABASE=NORMPVC;" _
                                                     & "LANGUAGE=Türkçe;" _
                                                     & "Trusted_Connection=Y"), _
                                                 Array("es;Regional=Yes")), _
                                     Destination:=Range("A2"))
        .CommandText = Array( _
                       "SELECT LG_086_CLCARD.CODE AS CH_Kodu, " _
                            & "LG_086_CLCARD.DEFINITION_ AS Ünvanı, " _
                            & "SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) AS TUTAR, " _
                            & "SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS [Toplam Maliyet], " _
                            & "SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) - SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS KAR " _
                      & "FROM LG_086_CLCARD " _
                      & "INNER JOIN LG_086_01_INVOICE " _
                               & "ON LG_086_CLCARD.LOGICALREF = LG_086_01_INVOICE.CLIENTREF " _
                      & "INNER JOIN LG_086_01_STLINE " _
                               & "ON LG_086_01_INVOICE.LOGICALREF = LG_086_01_STLINE.INVOICEREF " _
                      & "WHERE (LG_086_01_INVOICE.DATE_ = " & [COLOR=red][B]tarih[/B][/COLOR] _
                               & "AND (LG_086_01_INVOICE.TRCODE = 8) " _
                               & "AND (LG_086_01_INVOICE.CANCELLED = 0) " _
                               & "AND (LG_086_01_STLINE.LINETYPE = 0) " _
                      & "GROUP BY LG_086_CLCARD.CODE, LG_086_CLCARD.DEFINITION_ " _
                      & "ORDER BY LG_086_CLCARD.CODE ")
        .Name = "CIRO_DSN_Günlük_KARLILIK"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
End If
End Sub
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
Teşekürler , deneyeceğim...sonucu size dönerim

iyi çalışmalar...
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
Hata alıyorum.

Teşekürler , deneyeceğim...sonucu size dönerim

iyi çalışmalar...
Verdiğiniz kodu , uygulamama ekleyip F5 yaptığımda bir hata alıyorum.

Hücre içerisine örnek 14 Şubat 2008 i nasıl yazmalıyım...

14.02.2008 mi ?
02.14.2008 mi ?
14/02/2008 mi ?

ve hücre biçimlendirmesi nasıl olmalı....

Hata görüntüsü ekdeki gibidir...

teşekkürler....
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
H5 hücresine yazacağınız özel bir tarih formatı yok. Alelade bir tarihi nasıl yazıyorsanız öyle yazacaksınız.

Gönderdiğiniz resimde çıkan hata mesajında "Debug" denen tuşa basın ve VBE'deki işaretlenen satırın görüntüsünü ekleyin. O daha açıklayıcı olacaktır.
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
DEBUG Ekranı

H5 hücresine yazacağınız özel bir tarih formatı yok. Alelade bir tarihi nasıl yazıyorsanız öyle yazacaksınız.

Gönderdiğiniz resimde çıkan hata mesajında "Debug" denen tuşa basın ve VBE'deki işaretlenen satırın görüntüsünü ekleyin. O daha açıklayıcı olacaktır.
DeBUG ekranı ekdedir.

Sub Gunluk_KAR_MAKRO_01()
If IsDate(Cells(5, "H")) Then
tarih = Year(Cells(5, "H")) & "-" & Format(Month(Cells(5, "H")), "00") & "-" & Format(Day(Cells(5, "H")), "00")
With ActiveSheet.QueryTables.Add(Connection:=Array( _
Array("ODBC;" _
& "DSN=CIRO_DSN;" _
& "Description=CIRO_DSN;" _
& "APP=Micros oft Office 2003;" _
& "WSID=LSUERSOY" _
& "DATABASE=NORMPVC;" _
& "LANGUAGE=Türkçe;" _
& "Trusted_Connection=Y"), _
Array("es;Regional=Yes")), _
Destination:=Range("A2"))
.CommandText = Array( _
"SELECT LG_086_CLCARD.CODE AS CH_Kodu, " _
& "LG_086_CLCARD.DEFINITION_ AS Ünvanı, " _
& "SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) AS TUTAR, " _
& "SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS [Toplam Maliyet], " _
& "SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) - SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS KAR " _
& "FROM LG_086_CLCARD " _
& "INNER JOIN LG_086_01_INVOICE " _
& "ON LG_086_CLCARD.LOGICALREF = LG_086_01_INVOICE.CLIENTREF " _
& "INNER JOIN LG_086_01_STLINE " _
& "ON LG_086_01_INVOICE.LOGICALREF = LG_086_01_STLINE.INVOICEREF " _
& "WHERE (LG_086_01_INVOICE.DATE_ = " & tarih _
& "AND (LG_086_01_INVOICE.TRCODE = 8) " _
& "AND (LG_086_01_INVOICE.CANCELLED = 0) " _
& "AND (LG_086_01_STLINE.LINETYPE = 0) " _
& "GROUP BY LG_086_CLCARD.CODE, LG_086_CLCARD.DEFINITION_ " _
& "ORDER BY LG_086_CLCARD.CODE ")

.Name = "CIRO_DSN_Günlük_KARLILIK"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End If
End Sub
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Peki, o zaman; düzgün çalışan (hatasız) bir makro kaydı yapıp, kodlarını buraya ekler misiniz? Oluşan kodların hiçbir yerine dokunmayın.

Ama yaptığınız "makro kaydını", makroyu tekrar çalıştırarak mutlaka test ediniz. Daha sonra kodları buraya ekleyiniz.
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
Peki, o zaman; düzgün çalışan (hatasız) bir makro kaydı yapıp, kodlarını buraya ekler misiniz? Oluşan kodların hiçbir yerine dokunmayın.

Ama yaptığınız "makro kaydını", makroyu tekrar çalıştırarak mutlaka test ediniz. Daha sonra kodları buraya ekleyiniz.
Hatasız Çalışan Makro Kaydı...(Gerçi ufak tefek USER Forma yansıyan Listview da sorunlar var ama o sorunları başka bir konuda anlatmayı düşünüyorum veya bu konuda da devam edebiliriz )

Sub Gunluk_KAR_MAKRO_01()
'
' Gunluk_KAR_MAKRO_01 Makro
' Makro ERSOY tarafından 08.02.2008 tarihinde kaydedildi.
'

'
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=CIRO_DSN;Description=CIRO_DSN;APP=Microsoft Office 2003;WSID=LSUERSOY;DATABASE=NORMPVC;LANGUAGE=Türkçe;Trusted_Connection=Y" _
), Array("es;Regional=Yes")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT LG_086_CLCARD.CODE AS CH_Kodu, LG_086_CLCARD.DEFINITION_ AS Ünvanı, SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) AS TUTAR, SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE" _
, _
".OUTCOST) AS [Toplam Maliyet], SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) - SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS KAR FROM LG_086_CLCARD INNER JOIN " _
, _
" LG_086_01_INVOICE ON LG_086_CLCARD.LOGICALREF = LG_086_01_INVOICE.CLIENTREF INNER JOIN LG_086_01_STLINE ON LG_086_01_INVOICE.LOGICALREF = LG_086_01_STLINE" _
, _
".INVOICEREF WHERE (LG_086_01_INVOICE.DATE_ = CONVERT(DATETIME, '2008-02-04 00:00:00', 102)) AND (LG_086_01_INVOICE.TRCODE = 8) AND (LG_086_01_INVOICE.CANCELLED = 0) AND (L" _
, _
"G_086_01_STLINE.LINETYPE = 0) GROUP BY LG_086_CLCARD.CODE, LG_086_CLCARD.DEFINITION_ ORDER BY LG_086_CLCARD.CODE " _
)
.Name = "CIRO_DSN_Günlük_KARLILIK"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

Private Sub CommandButton1_Click()
Gunluk_KAR_MAKRO_01
End Sub

Private Sub CommandButton4_Click()
' SAYFADAKİ VERİLERİ LISTVIEW İÇİNE ALIR
Set Sh = Sheets("Sayfa1")
Son = Sh.Cells(65536, 1).End(xlUp).Row
'yeni = True
With UserForm1.ListView1
.ListItems.Clear
For i = 2 To Son
.ListItems.Add , , Sh.Cells(i, 1)
x = x + 1
With .ListItems(x).ListSubItems
.Add , , Sh.Cells(i, 2) ' BURADAKİ Sh.Cells(1, 2) İFADESİ ALINAN HÜCREDİR
.Add , , Sh.Cells(i, 3)
.Add , , Sh.Cells(i, 4)
.Add , , Sh.Cells(i, 5)
' Image1.Picture = LoadPicture(TextResimKisaYol.Text): Me.Repaint ' İMAGE NESNESİ DEĞİŞMESİ İÇİN
.Add , , i
End With
Next i
End With
Set Sh = Nothing
End Sub


Private Sub ListView1_BeforeLabelEdit(Cancel As Integer)

End Sub

Private Sub UserForm_Initialize()
'******* 1. LISTVIEW' U DÜZENLİYORUZ ******
Dim Litem As ListItem
Set Sh = Sheets("Sayfa1")

Sheets("Sayfa1").Columns.AutoFit ' EXCEL SAYFASINDAKİ SÜTUN GENİŞLİĞİNİ OTOMATİK AYARLAR

' ETİKETLERİ OTOMATİK OLARAK ALIYORUZ, BURADAKİ Sh.Range("A1")) İFADESİ SÜTUNUN BAŞLIĞIDIR
Label1 = Sh.Range("A1")
Label2 = Sh.Range("B1")
Label3 = Sh.Range("C1")
Label4 = Sh.Range("D1")
Label5 = Sh.Range("E1")
'Label6 = Sh.Range("F1")
'Label6 = Sh.Range("G1")
'Label7 = Sh.Range("H1")
'Label8 = Sh.Range("I1")
'Label9 = Sh.Range("J1")
'Label10 = Sh.Range("K1")
'Label11 = Sh.Range("L1")

Son = Sh.Cells(65536, 1).End(xlUp).Row
'yeni = True
With UserForm1.ListView1
.ListItems.Clear
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
With .ColumnHeaders
' LISTVIEW DE SÜTUN FAZLAYSA İLAVE EDİN
' SAYFADAN BİLGİLERİ, BAŞLIKLARI ALIR " Range("A1").Width " Excel tablosundan Sütun genişliğini alır
.Add , , Sh.Cells(1, 1), Sh.Range("A1").Width
.Add , , Sh.Cells(1, 2), Sh.Range("B1").Width
.Add , , Sh.Cells(1, 3), Sh.Range("C1").Width
.Add , , Sh.Cells(1, 4), Sh.Range("D1").Width
.Add , , Sh.Cells(1, 5), Sh.Range("E1").Width
End With
For i = 2 To Son
Set Litem = .ListItems.Add(, , Cells(i, 1))
For j = 1 To 4
Litem.SubItems(j) = Cells(i, j)
Next
Next
End With
End Sub

Sub ListeGuncelle()
' SAYFADAKİ VERİLERİ LISTVIEW İÇİNE ALIR
Set Sh = Sheets("Sayfa1")
Son = Sh.Cells(65536, 1).End(xlUp).Row
'yeni = True
With UserForm1.ListView1
.ListItems.Clear
For i = 2 To Son
.ListItems.Add , , Sh.Cells(i, 1)
x = x + 1
With .ListItems(x).ListSubItems
.Add , , Sh.Cells(i, 2) ' BURADAKİ Sh.Cells(1, 2) İFADESİ ALINAN HÜCREDİR
.Add , , Sh.Cells(i, 3)
.Add , , Sh.Cells(i, 4)
.Add , , Sh.Cells(i, 5)
' Image1.Picture = LoadPicture(TextResimKisaYol.Text): Me.Repaint ' İMAGE NESNESİ DEĞİŞMESİ İÇİN
.Add , , i
End With
Next i
End With
Set Sh = Nothing
End Sub
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Bir de aşağıdakini deneyin o zaman ...

Kod:
Sub Gunluk_KAR_MAKRO_01()
'
' Gunluk_KAR_MAKRO_01 Makro
' Makro ERSOY tarafından 08.02.2008 tarihinde kaydedildi.
'
Dim tarih As String
'
If IsDate(Cells(5, "H")) Then
    tarih = Year(Cells(5, "H")) & "-" & Format(Month(Cells(5, "H")), "00") & "-" & Format(Day(Cells(5, "H")), "00")
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=CIRO_DSN;Description=CIRO_DSN;APP=Microsoft Office 2003;WSID=LSUERSOY;DATABASE=NORMPVC;LANGUAGE=Türkçe;Trusted_Connection=Y" _
), Array("es;Regional=Yes")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT LG_086_CLCARD.CODE AS CH_Kodu, LG_086_CLCARD.DEFINITION_ AS Ünvanı, SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) AS TUTAR, SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE" _
, _
".OUTCOST) AS [Toplam Maliyet], SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) - SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS KAR FROM LG_086_CLCARD INNER JOIN " _
, _
" LG_086_01_INVOICE ON LG_086_CLCARD.LOGICALREF = LG_086_01_INVOICE.CLIENTREF INNER JOIN LG_086_01_STLINE ON LG_086_01_INVOICE.LOGICALREF = LG_086_01_STLINE" _
, _
".INVOICEREF WHERE (LG_086_01_INVOICE.DATE_ = CONVERT(DATETIME, '" & tarih & " 00:00:00', 102)) AND (LG_086_01_INVOICE.TRCODE = 8) AND (LG_086_01_INVOICE.CANCELLED = 0) AND (L" _
, _
"G_086_01_STLINE.LINETYPE = 0) GROUP BY LG_086_CLCARD.CODE, LG_086_CLCARD.DEFINITION_ ORDER BY LG_086_CLCARD.CODE " _
)
.Name = "CIRO_DSN_Günlük_KARLILIK"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End If
End Sub
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
Teşekkürler

Bir de aşağıdakini deneyin o zaman ...

Kod:
Sub Gunluk_KAR_MAKRO_01()
'
' Gunluk_KAR_MAKRO_01 Makro
' Makro ERSOY tarafından 08.02.2008 tarihinde kaydedildi.
'
Dim tarih As String
'
If IsDate(Cells(5, "H")) Then
    tarih = Year(Cells(5, "H")) & "-" & Format(Month(Cells(5, "H")), "00") & "-" & Format(Day(Cells(5, "H")), "00")
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=CIRO_DSN;Description=CIRO_DSN;APP=Microsoft Office 2003;WSID=LSUERSOY;DATABASE=NORMPVC;LANGUAGE=Türkçe;Trusted_Connection=Y" _
), Array("es;Regional=Yes")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT LG_086_CLCARD.CODE AS CH_Kodu, LG_086_CLCARD.DEFINITION_ AS Ünvanı, SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) AS TUTAR, SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE" _
, _
".OUTCOST) AS [Toplam Maliyet], SUM(DISTINCT LG_086_01_INVOICE.NETTOTAL) - SUM(LG_086_01_STLINE.AMOUNT * LG_086_01_STLINE.OUTCOST) AS KAR FROM LG_086_CLCARD INNER JOIN " _
, _
" LG_086_01_INVOICE ON LG_086_CLCARD.LOGICALREF = LG_086_01_INVOICE.CLIENTREF INNER JOIN LG_086_01_STLINE ON LG_086_01_INVOICE.LOGICALREF = LG_086_01_STLINE" _
, _
".INVOICEREF WHERE (LG_086_01_INVOICE.DATE_ = CONVERT(DATETIME, '" & tarih & " 00:00:00', 102)) AND (LG_086_01_INVOICE.TRCODE = 8) AND (LG_086_01_INVOICE.CANCELLED = 0) AND (L" _
, _
"G_086_01_STLINE.LINETYPE = 0) GROUP BY LG_086_CLCARD.CODE, LG_086_CLCARD.DEFINITION_ ORDER BY LG_086_CLCARD.CODE " _
)
.Name = "CIRO_DSN_Günlük_KARLILIK"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End If
End Sub
Teşekkürler , mükemmel sonuç.

Şimdi bu kodu iyice inceleyeceğim....

Daha sonra Hücreden alınan parametreyi USERFORM daki TEXTBOX dan almayı deneyeceğim...başaramzasam sizden TEXTBOX dan da nasıl SQL sorgusuna parametre gönderileceğini açıklamanızı isteyebilirim...

emeğinize sağlık , iyi çalışmalar...
 
Katılım
3 Mart 2008
Mesajlar
4
Excel Vers. ve Dili
v11 Türkçe
Hoca bir tarih formatı için amma uzun yollara geçmişsin.
date formatlarını dene:
örneğin sen '2008-2-9', 102 denemişsin bunun 103'ü var. ve sen anladığım kadarıyla excelden direkt tarih almak istiyorsun yada bildiğimiz avrupa latin tarih formatı kullanmak istiyorsun. gir 103 ü . merak etme bu görünümde 103 tür verilerini upload ederken tablo kendi steğine çeviri yapıp yine 102 yapar onu.
 
Katılım
29 Haziran 2005
Mesajlar
158
Excel Vers. ve Dili
MS Office Professional Plus 2013 64 Bit -Eng
MSSQL 2012 R2 64 Bit
teşekkürler...
 
Üst