• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Uzun SQL Tümceciği

Katılım
25 Temmuz 2005
Mesajlar
24
Uzun bir SQL'im var
Kod:
SELECT
A.ODANO, A.KTARIHI,A.CITARIHI,A.MADI1,A.ODATIPI,A.KISI,A.COCUK,A.COCUK2,
A.ACENTA,A.ODAFIYATI,A.DOVIZKODU,A.DOVIZKURU,A.FTIPI,A.INDIRIMY,
F.FOLYONO,F.DEPT,F.DOVIZKODU,F.BORC,SUM(F.BORC),COUNT(F.BORC)
FROM(
SELECT * FROM CIN WHERE 1=1 Union ALL
SELECT * FROM COUT WHERE 1=1) A,
FOLYOISL F
WHERE F.FOLYONO = A.KNO AND
A.KONAKLAMA NOT IN ('COMP','HUSE','H/USE','FCOMP') AND
A.COUTTARIHI = '06.15.2006' AND F.DEPT = '01'
GROUP BY
A.ODANO,A.KTARIHI,A.CITARIHI,A.MADI1,A.ODATIPI,A.KISI,A.COCUK,A.COCUK2,
A.ACENTA,A.ODAFIYATI,A.DOVIZKODU,A.DOVIZKURU,A.FTIPI,A.INDIRIMY,
F.FOLYONO,F.DEPT,F.DOVIZKODU,F.BORC
ORDER BY A.ODANO,F.FOLYONO

bunu VBA'da ekliyemiyorum
VBA'da 255 karakteri geçtiğinden işlem olmuyor
internette aramalarımdan aşağıdaki fonksiyonu buldum
şimdi bu fonksiyonla nasıl yapabilirim

Kod:
Function StringToArray(sSQL As String) As Variant 
    Dim aTemp() As String 
    Dim i As Long, j As Long 
    ReDim aTemp(1 To (Len(sSQL) \ 255) + 1) 
    j = 1 
    For i = 1 To Len(sSQL) Step 255 
        aTemp(j) = Mid(sSQL, i, 255) 
        j = j + 1 
    Next i 
    StringToArray = aTemp 
End Function

Teşekürler
 
Merhaba

A.KTARIHI,A.MADI1,A.ODATIPI,A.KISI,A.COCUK,A.COCUK2, _

satır sonlarını _ ile ayısanız

xxxxx,xxxxxxx,xxxxxxxxx, _
 
zafer' Alıntı:
Merhaba

A.KTARIHI,A.MADI1,A.ODATIPI,A.KISI,A.COCUK,A.COCUK2, _

satır sonlarını _ ile ayısanız

xxxxx,xxxxxxx,xxxxxxxxx, _

dediğiniz şekildede yaptım ancak tüm karakter birleşip 255'i aşınca problem oluşuyor ve internette yapmış olduğum aramalardada böyle bir karakter limitinin olduğunu öğrendim.

çözümüde bu fonksiyon olarak göstermişler. Ancak bu fonksiyonu nasıl kullanıcağımı bilemedim.
 
sql den anlamam ama yazmış olduğunuz fonksiyon sql cümleciğini varianta çeviriyor,
Sql = StringToArray(Sql)
Şeklinde varianta çeviriyorsunuz gerisini bilemem.


[vb:1:03074a4577]Sub dene()
Sql = "SELECT A.ODANO, A.KTARIHI,A.CITARIHI,A.MADI1,A.ODATIPI,A.KISI,A.COCUK,A.COCUK2," & _
"A.ACENTA,A.ODAFIYATI,A.DOVIZKODU,A.DOVIZKURU,A.FTIPI,A.INDIRIMY," & _
"F.FOLYONO , F.DEPT, F.DOVIZKODU, F.BORC, Sum(F.BORC), Count(F.BORC)" & _
"FROM(SELECT * FROM CIN WHERE 1=1 Union ALL" & _
"SELECT * FROM COUT WHERE 1=1) A, FOLYOISL F WHERE F.FOLYONO = A.KNO AND" & _
"A.KONAKLAMA NOT IN ('COMP','HUSE','H/USE','FCOMP') AND A.COUTTARIHI = '06.15.2006' AND F.DEPT = '01'" & _
"Group BY A.ODANO,A.KTARIHI,A.CITARIHI,A.MADI1,A.ODATIPI,A.KISI,A.COCUK,A.COCUK2," & _
"A.ACENTA,A.ODAFIYATI,A.DOVIZKODU,A.DOVIZKURU,A.FTIPI,A.INDIRIMY, F.FOLYONO , F.DEPT, F.DOVIZKODU, F.BORC" & _
"ORDER BY A.ODANO,F.FOLYONO"

Sql = StringToArray(Sql)

End Sub
Function StringToArray(sSQL As String) As Variant
Dim aTemp() As String
Dim i As Long, j As Long
ReDim aTemp(1 To (Len(sSQL) \ 255) + 1)
j = 1
For i = 1 To Len(sSQL) Step 255
aTemp(j) = Mid(sSQL, i, 255)
j = j + 1
Next i
StringToArray = aTemp
End Function[/vb:1:03074a4577]
 
[vb:1:f78f827ae7]Dim sSQL, ssql2, ssql3
sSQL = "SELECT A.ODANO,A.KTARIHI,A.CITARIHI,A.MADI1,A.ODATIPI,A.KISI,A.COCUK,A.COCUK2,A.ACENTA,A.ODAFIYATI,A.DOVIZKODU,A.DOVIZKURU,A.FTIPI,A.INDIRIMY,F.FOLYONO,F.DEPT,F.DOVIZKODU,F.BORC,SUM(F.BORC),COUNT(F.BORC) "
ssql2 = "FROM(SELECT * FROM CIN WHERE 1=1 UNION ALL SELECT * FROM COUT WHERE 1=1) A, FOLYOISL F "
ssql3 = "WHERE F.FOLYONO = A.KNO AND A.KONAKLAMA NOT IN ('COMP','HUSE','H/USE','FCOMP') AND A.COUTTARIHI = '06.17.2006' AND F.DEPT = '01'"
ssql4 = "GROUP BY A.ODANO,A.KTARIHI,A.CITARIHI,A.MADI1,A.ODATIPI,A.KISI,A.COCUK,A.COCUK2,A.ACENTA,A.ODAFIYATI,A.DOVIZKODU,A.DOVIZKURU,A.FTIPI,A.INDIRIMY,F.FOLYONO,F.DEPT,F.DOVIZKODU,F.BORC ORDER BY A.ODANO,F.FOLYONO"
....
....
....
....
.CommandText = Array(sSQL, ssql2, ssql3, ssql4)
[/vb:1:f78f827ae7]

yukarıdaki şekilde çözülmüştür. Bir başkasına örnek olması dileğiyle
Teşekürler
 
merhaba

bendeki cümle daha uzun ve çözemiyorum
yardımcı olursanız sevinirim



Dim Sql1, Sql2, Sql3, Sql4, Sql5, Sql6, Sql7, Sql8, Sql9, Sql10

Sql1 = "SELECT dbo.TBLBNKHESSABIT.ACIKLAMA , SUM(CASE WHEN dbo.TBLMCEK.SC_SONDUR = 'B' AND (dbo.TBLMCEK.VADETRH = '2007-05-01') THEN dbo.TBLMCEK.TUTAR ELSE 0 END) ,"
Sql2 = "SUM(CASE WHEN dbo.TBLMCEK.SC_SONDUR = 'B' AND (dbo.TBLMCEK.VADETRH = '2007-05-02') THEN dbo.TBLMCEK.TUTAR ELSE 0 END) , SUM(CASE WHEN dbo.TBLMCEK.SC_SONDUR = 'B' AND (dbo.TBLMCEK.VADETRH = '2007-05-03') THEN dbo.TBLMCEK.TUTAR ELSE 0 END) , "
Sql3 = "SUM(CASE WHEN dbo.TBLMCEK.SC_SONDUR = 'B' AND (dbo.TBLMCEK.VADETRH = '2007-05-04') THEN dbo.TBLMCEK.TUTAR ELSE 0 END) , SUM(CASE WHEN dbo.TBLMCEK.SC_SONDUR = 'B' AND (dbo.TBLMCEK.VADETRH = '2007-05-05')THEN dbo.TBLMCEK.TUTAR ELSE 0 END) , "
Sql4 = "SUM(CASE WHEN dbo.TBLMCEK.SC_SONDUR = 'B' AND (dbo.TBLMCEK.VADETRH = '2007-05-06') THEN dbo.TBLMCEK.TUTAR ELSE 0 END) , SUM(CASE WHEN dbo.TBLMCEK.SC_SONDUR = 'B' AND (dbo.TBLMCEK.VADETRH = '2007-05-07')THEN dbo.TBLMCEK.TUTAR ELSE 0 END)"
Sql5 = "FROM dbo.TBLMCEK LEFT OUTER JOIN dbo.TBLBNKHESSABIT ON dbo.TBLMCEK.SC_VERILENK = dbo.TBLBNKHESSABIT.NETHESKODU GROUP BY dbo.TBLBNKHESSABIT.HESAPTIPI, dbo.TBLBNKHESSABIT.ACIKLAMA, dbo.TBLMCEK.SC_YERI, dbo.TBLMCEK.SC_SONDUR HAVING (dbo.TBLBNKHESSABIT.HESAPTIPI = 5) AND (dbo.TBLMCEK.SC_YERI = 'T')"
Sql6 = "Union ALL"
Sql7 = "SELECT ISNULL(SC_VERILENK, 'PORTFOY') , SUM(CASE WHEN (VADETRH = '2007-05-01 ') THEN TUTAR ELSE 0 END) ,"
Sql8 = "SUM(CASE WHEN (VADETRH = '2007-05-02 ') THEN TUTAR ELSE 0 END) , SUM(CASE WHEN (VADETRH = '2007-05-03 ') THEN TUTAR ELSE 0 END) , SUM(CASE WHEN (VADETRH = '2007-05-04 ') THEN TUTAR ELSE 0 END) ,"
Sql9 = "SUM(CASE WHEN (VADETRH = '2007-05-05 ') THEN TUTAR ELSE 0 END) , SUM(CASE WHEN (VADETRH = '2007-05-06 ') THEN TUTAR ELSE 0 END) , SUM(CASE WHEN (VADETRH = '2007-05-07 ') THEN TUTAR ELSE 0 END)"
Sql10 = "FROM dbo.TBLMCEK AS TBLMCEK_1 GROUP BY SC_SONDUR, SC_YERI, SC_VERILENK HAVING (SC_YERI = 'P') AND (SC_SONDUR = 'B') "


'Array(sSQL, ssql2, ssql3, ssql4)

With Selection.QueryTable
.Connection = Array(Array( _
"ODBC;DRIVER=SQL Server;SERVER=DEMETER;UID=administrator;APP=Microsoft Office 2003;WSID=DEMETER;DATABASE=GUNESPAN07;Trusted_Connectio" _
), Array("n=Yes"))
.CommandText = Array(Sql1, Sql2, Sql3, Sql4, Sql5, Sql6, Sql7, Sql8, Sql9, Sql10)
.Refresh BackgroundQuery:=False
End With
 
Geri
Üst