Sayfayı Yazdır | Pencereyi Kapat

Sql de gariplikler...

Nereden Yazdırıldığı: ERP Nedir? | Türkiye'nin ERP Forum Platformu
Kategori: ERP Genel
Forum Adı: ERP ve Excel
Forum Tanımlaması: ERP'den Excel'e Veri Çekmek ve Excel İle İlgili Bilgiler ve Sorular İçin...
URL: http://www.erpne.org/forum_posts.asp?TID=1018
Tarih: 22 Kasım 2024 Saat 00:42
Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com


Konu: Sql de gariplikler...
Mesajı Yazan: hbulus
Konu: Sql de gariplikler...
Mesaj Tarihi: 15 Temmuz 2008 Saat 14:37
Excel VBA'da asagidaki sql koduyla cari hareket listesi aliyorum.
 
Sql = "SELECT    * FROM TBLCAHAR "
Sql = Sql + " WHERE CARI_KOD='" + (Sayfa12.Cells(2, 1)) + "'"
Sql = Sql + " ORDER BY TARIH ASC   "
 
Bazi cari kodlari islemiyor. Bazilarinda güzel bir sekilde çalisiyor. Acaba nereye dikkat etmeliyim?



Cevaplar:
Mesajı Yazan: mbaykan
Mesaj Tarihi: 15 Temmuz 2008 Saat 15:54
Sayfa12.Cells(2,1) ifadesini Cstr(Sayfa12.Cells(2,1)) seklinde denermisin?


-------------
Mehmet Baykan


Mesajı Yazan: Conari
Mesaj Tarihi: 15 Temmuz 2008 Saat 15:57
Sql = Sql + " WHERE CARI_KOD='" &Sayfa12.Cells(2, 1)&"'"
Çalistirmasi lazim.


-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: hbulus
Mesaj Tarihi: 15 Temmuz 2008 Saat 16:23
Orjinalini yazan: mbaykan mbaykan Yazdı:

Sayfa12.Cells(2,1) ifadesini Cstr(Sayfa12.Cells(2,1)) seklinde denermisin?
 
Seklinde sonuç degismedi
 
 


Mesajı Yazan: hbulus
Mesaj Tarihi: 15 Temmuz 2008 Saat 16:25
Orjinalini yazan: Conari Conari Yazdı:

Sql = Sql + " WHERE CARI_KOD='" &Sayfa12.Cells(2, 1)&"'"
Çalistirmasi lazim.
 
Bu sekilde denedigimde ise cari kod kisiti verilmemis gibi tüm carileri döküyor. Arkadaslardan yeni fikirler bekliyorum.  


Mesajı Yazan: mbaykan
Mesaj Tarihi: 15 Temmuz 2008 Saat 16:40
bazi carilerde dogru verip bazilarinda vermiyorsa, verdigi cari kodla, vermedigi cari kodu yazar misiniz?. Cari kodunuzda I,S ve G biçiminde türkçe harf varsa Netsis'ten ek bir Fonksiyonla bu harflerin dogru bir sekilde sorgulanasini saglayabiliyorsunuz..

-------------
Mehmet Baykan


Mesajı Yazan: hbulus
Mesaj Tarihi: 15 Temmuz 2008 Saat 16:45

Örnek olarak;

"GÜÇLÜ MOB." diye bir cari kodu deger döndürürken,
"MARIFET" seklindeki cari kod, hareketi olmasina ragmen deger döndürmüyor. Yani sadece Türkçe karakterlerle ilgili degil sanirim olay.
 
Bir de bu ek fonksiyon dediginiz nedir?


Mesajı Yazan: hbulus
Mesaj Tarihi: 15 Temmuz 2008 Saat 16:51
Orjinalini yazan: hbulus hbulus Yazdı:

Orjinalini yazan: Conari Conari Yazdı:

Sql = Sql + " WHERE CARI_KOD='" &Sayfa12.Cells(2, 1)&"'"
Çalistirmasi lazim.
 
Bu sekilde denedigimde ise cari kod kisiti verilmemis gibi tüm carileri döküyor. Arkadaslardan yeni fikirler bekliyorum.  
 
Bu arada Conari arkadasimdan özür dilerim. ben sql olan degisken ismini degistirmistim. Sizin yazdiginiz cevabi direk yapistirinca where blogunu görmedigi için arkadas tümünü listeliyormus.Big%20smile Sonradan farkettim . Düzelttigimde benim kodla sizinki ayni sonucu veriyor. Yani tüm cari kodlarda çalismadi.Confused


Mesajı Yazan: mbaykan
Mesaj Tarihi: 15 Temmuz 2008 Saat 16:59
probleminiz çözüldü galiba benim Cstr(Sayfa12.Cells(2,1)) yazilisi da ayni sonucu veriyor mu? (vermesi gerekir)

-------------
Mehmet Baykan


Mesajı Yazan: hbulus
Mesaj Tarihi: 15 Temmuz 2008 Saat 17:03

problem maalesef çözülmedi. Cstr(Sayfa12.Cells(2,1)) ifadesi de ayni sekilde davraniyor.



Mesajı Yazan: mbaykan
Mesaj Tarihi: 15 Temmuz 2008 Saat 17:41
2 Adet fonksiyon veriyorum
1.si VBA için Excel'de
2.si SQL'de her database içinde olusturulacak ondan sonra senin SQL stiring'in su sekilde olmali
 
... CARI_KOD = .dbo.W2NTRK('" + esctrk(Sayfa12.Cells(2,1)) +"') ORDER BY ..."
VBA için
Public Function esctrk(gstr)
    Dim geri As String
    geri = gstr
    geri = Replace(geri, "G", "~G")
    geri = Replace(geri, "S", "~S")
    geri = Replace(geri, "I", "~I")
    geri = Replace(geri, "g", "~g")
    geri = Replace(geri, "s", "~s")
    geri = Replace(geri, "i", "~i")
    esctrk = geri
End Function
SQL için

CREATE FUNCTION [dbo].[W2NTRK](@A NVARCHAR(4000))

RETURNS NVARCHAR(4000)

AS

BEGIN

DECLARE @TMP NVARCHAR(4000)

SET @TMP = REPLACE(@A , N'~G', N'')--

SET @TMP = REPLACE(@TMP , N'~S', N'')--

SET @TMP = REPLACE(@TMP , N'~I', N'')--

SET @TMP = REPLACE(@TMP , N'~g', N'')--

SET @TMP = REPLACE(@TMP , N'~s', N'')--

SET @TMP = REPLACE(@TMP , N'~i', N'')--

RETURN @TMP

END

kolay gelsin


-------------
Mehmet Baykan


Mesajı Yazan: hbulus
Mesaj Tarihi: 15 Temmuz 2008 Saat 17:47

Asagidaki gibi bir hata verdi;

"Run-time error....
cannot find either column '''' or the user-defined function or aggregate "dbo.W2NTRK", or the name is ambiguous."
 


Mesajı Yazan: mbaykan
Mesaj Tarihi: 15 Temmuz 2008 Saat 18:10
Aldiginiz hatayi
CREATE FUNCTION ile baslayan satirlari Query Analyzer'da çalistirdiniz ve W2NTRK fonksiyonunu olusturtunuz degil mi?
Bu fonksiyon Netsis'in TRK fonksiyonuna benzer. çalistiginiz database'de olusturulmalidir.
VBA'da kullanirken
... .dbo.W2NTRK('"+esctrk(<metin>)+"') ...
mavi renkli parantezlerin önünde ve arkasinda (açarken/kapatirken) tektirnak (')
-parantez isareti yok-


-------------
Mehmet Baykan


Mesajı Yazan: SERHAT
Mesaj Tarihi: 15 Temmuz 2008 Saat 19:01

Merhaba;

vba içinde ekrandan alinan deger için aramada problem yasiyorum.
TBLCASABIT.CARI_ISIM Like '" & Trim(txtad) & "%" & "' " için örnek verecek isek
mesela 'SERIF%' ile baslayan için getirmemektedir latin'den dolayi. S = Þ ,I=Ý olmasi gerekmekte, function için vba editürü içinde latin harfini kabül etmediginden replace yapamamaktayim. Bu konu da yardimci olabilirmisiniz.Tesekkürler.
 


-------------
Serhat ÜLKER, www.eston.com

Gömleğin ilk düğmesi yanlış iliklenince diğerleri de yanlış gider.


Mesajı Yazan: hbulus
Mesaj Tarihi: 15 Temmuz 2008 Saat 19:01

Sql server'da dediginiz islemi yapmamistim. Simdi uyariniz üzerine yaptim. Exceldeki hata gerçektende kalkti. Ama sonuçlar yine ayni. Ben bir sey anlamadim bu isten. excel de denedigim sonuç vermeyen cari kodlari Netsis üzerinde deneyerek bakiyorum gerçekten hareket yok mu diye ama nafile. Where blogunu kaldirdigim zaman tüm hareketleri döküyor, o cari kodlari burada problemsiz (dogal olarak) döküyor.



Mesajı Yazan: Conari
Mesaj Tarihi: 16 Temmuz 2008 Saat 08:39
Profellerdan olusturdugunuz ve çekilen sql cümlesine bakin where den sonrasi nasil gidiyor?

-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: hbulus
Mesaj Tarihi: 16 Temmuz 2008 Saat 10:02
Orjinalini yazan: mbaykan mbaykan Yazdı:

 
Public Function esctrk(gstr)
    Dim geri As String
    geri = gstr
    geri = Replace(geri, "G", "~G")
    geri = Replace(geri, "S", "~S")
    geri = Replace(geri, "I", "~I")
    geri = Replace(geri, "g", "~g")
    geri = Replace(geri, "s", "~s")
    geri = Replace(geri, "i", "~i")
    esctrk = geri
End Function

Ilginç bir durum. Bunu bilmiyordum. Sn. mbaykan'in gönderdigi fonksiyonda

geri = Replace(geri, "I", "~I" satirindaki I harfini "~I" yerine "Ý" ile degistirmek istedim ama bir türlü olmuyor. Yani VBA da Word'deki gibi hem Türkçe hem de diger dilleri yanyana kullanamiyorum. Yapistirdigim zaman " ? " isareti çikiyor. Halbuki bunu becerirsek olay düzelecek.
 


Mesajı Yazan: mbaykan
Mesaj Tarihi: 16 Temmuz 2008 Saat 10:23
VBA'dan türlçe karakterseri halledebilmenin yolu ~ (tilda) # yada benzeri bir özel karakteri isaretsiz (GUIiSOC) harflere ekleyerek bunu SQL'e göndermek, SQL'de de W2NTRK fonksiyonu yardimiyla bunlari istediginiz ASCII koda (I için < ="Content-" content="text/; charset=utf-8">< name="ProgId" content="Word.">< name="Generator" content="Microsoft Word 12">< name="Originator" content="Microsoft Word 12"><> Ý) gibi dönüstürmemiz gerekiyor. (Simge Bilgiislemden Tarik arkadasimizin buldugu ve bana önerdigi çözüm bu.)



-------------
Mehmet Baykan


Mesajı Yazan: hbulus
Mesaj Tarihi: 16 Temmuz 2008 Saat 12:29
Sn. Mbaykan sorunu sizin fonksiyonla oynayarak su sekilde çözdüm;
 
Public Function esctrk(gstr)
    Dim geri As String
    geri = gstr
    geri = Replace(geri, "G", Sayfa12.Cells(1, 3))
    geri = Replace(geri, "S", Sayfa12.Cells(1, 1))
    geri = Replace(geri, "I", Sayfa12.Cells(1, 2))
    esctrk = geri
End Function
 
1., 2. ve 3. hücrelere Þ, Ý,  Ð harflerini yerlestirdim ve sizin fonksiyonda replace islemine bu hücreleri soktum.  Sonuç harika oldu. Gariptir Ö, Ç ve Ü harflerinde sorun yok sadece I, G ve S harflerinde bu gerekiyor. Ilginize çok tesekkür ederim.
Kolay gelsin.


Mesajı Yazan: mbaykan
Mesaj Tarihi: 16 Temmuz 2008 Saat 12:38
excel'deki hücrelere G,S ve I'nin çevrimini hücrelere koymak VBasic açisindan tasinabilirlik zorlugu çikartir. Bu fonksiyonu kullandiginiz her Excel tablosunda Sheet12 isimli bir sayfayi bulundurmak gerekir.

netsisnedir forum'unda SQL için yazdigim Function bir garip görünüyor, onu düzeltiyorum. Baska arkadaslarin isine yarar umarim.

CREATE    FUNCTION [dbo].[W2NTRK](@A NVARCHAR(4000))
RETURNS NVARCHAR(4000) 
AS
BEGIN
  DECLARE @TMP NVARCHAR(4000)
  SET @TMP = REPLACE(@A , N'~G', N'Ð')  --G (SQL'de yumusak G görüntüsü
  SET @TMP = REPLACE(@TMP , N'~S', N'Þ')  --S (SQL'de S görüntüsü
  SET @TMP = REPLACE(@TMP , N'~I', N'Ý')  --I (SQL'de I harfi görüntüsü
  SET @TMP = REPLACE(@TMP , N'~g', N'ð')  --g
  SET @TMP = REPLACE(@TMP , N'~s', N'þ')  --s
  SET @TMP = REPLACE(@TMP , N'~i', N'ý')  --i
  RETURN @TMP
END



-------------
Mehmet Baykan


Mesajı Yazan: hbulus
Mesaj Tarihi: 16 Temmuz 2008 Saat 13:20
Evet verdiginiz son function düzgün çalisti. Ama önceki çalismayinca bende kendimce alternatif üretmistim. Tsk.



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 11.10 - http://www.webwizforums.com
Copyright ©2001-2017 Web Wiz Ltd. - https://www.webwiz.net