ListView'e alinan verilerde karekter sorunu
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=2389
Tarih: 22 Kasım 2024 Saat 08:36 Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com
Konu: ListView'e alinan verilerde karekter sorunu
Mesajı Yazan: unalh
Konu: ListView'e alinan verilerde karekter sorunu
Mesaj Tarihi: 03 Ocak 2011 Saat 09:25
Merhaba Arkadaslar,
ListView'e direk netsis'ten Cari bilgileri aliyorum.
Gelen verilerde karekter sorunu yok fakat arama bölümünden arama yaparken karekter sorunu yasiyorum.
Örnegin.
Listede Is bankasi var arama yaparken Is bankasi yazdigimda çikmiyor.
Kodlar asagida.
Ilgilize simdiden tesekkür ederim.
Sub veri_getir() Dim SqlText As String Dim conn, rs As Object Set conn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") ListView1.ListItems.Clear With conn .Provider = "sqloledb" .CommandTimeout = 120 .ConnectionString = "Data Source=.......;USER ID=.......;PASSWORD=.......;AUTO TRANSLATE=FALSE" .Open .DefaultDatabase = "........." End With SqlText = "SELECT *" SqlText = SqlText + " FROM TBLCASABIT where CARI_ISIM like '" & TextBox1.Text & "%';" rs.Open SqlText, conn, adOpenStatic, adLockReadOnly rs.MoveFirst Do While Not rs.EOF i = i + 1 ListView1.ListItems.Add , , rs("CARI_KOD").Value ListView1.ListItems(i).SubItems(1) = rs("CARI_ISIM").Value rs.MoveNext Loop rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub
|
Cevaplar:
Mesajı Yazan: Conari
Mesaj Tarihi: 03 Ocak 2011 Saat 14:19
Arama bölümü neresi..
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: unalh
Mesaj Tarihi: 03 Ocak 2011 Saat 15:44
Form açilisinda verileri aliyorum sonrasinda TextBox1 ile arama yapiyorum verileri aldigim kod ile arama yaptigim kod ayni.
Bu kod ile arama yapiyorum
Private Sub TextBox1_Change() Call veri_getir End Sub
Sub veri_getir()
.....
SqlText = SqlText + " FROM TBLCASABIT where CARI_ISIM like '" & TextBox1.Text & "%';"
.......
End Sub
|
Mesajı Yazan: mbaykan
Mesaj Tarihi: 03 Ocak 2011 Saat 22:31
Bu sorun Latin1 karakter setindeki Türkçe (GSIgsi) harflerinden kaynaklanir. Çözümü için Database'inde bir function dbo.TURKCE adinda (veya senin istedigin bir ad)
SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO
CREATE FUNCTION [dbo].[TURKCE](@A NVARCHAR(4000)) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @TMP NVARCHAR(4000) SET @TMP = REPLACE(@A , '~#G', N'Ð') SET @TMP = REPLACE(@TMP ,'~#S', N'Þ') SET @TMP = REPLACE(@TMP ,'~#I', N'Ý') SET @TMP = REPLACE(@TMP ,'~#i', N'ý') SET @TMP = REPLACE(@TMP ,'~#g', N'ð') SET @TMP = REPLACE(@TMP ,'~#s', N'þ') RETURN @TMP END
Excel'de bir function esctrk adinda (ya da senin istedigin bir ad'da)
Function esctrk(x As String) Dim y As String y = Replace(x, "G", "~#G") y = Replace(y, "S", "~#S") y = Replace(y, "I", "~#I") y = Replace(y, "i", "~#i") y = Replace(y, "g", "~#g") y = Replace(y, "s", "~#s") esctrk = y End Function
olusturduktan sonra text'in için
...CARI_ISIM like .dbo.TURKCE('" & esctrk(TextBox1.Text) & "%');" seklinde yazmalisin özet olarak
sql'de .dbo.TURKCE(deger) excel'de esctrk(deger) ile karakterler dönüstürülerek sonuç alinir kolay gelsin
------------- Mehmet Baykan
|
Mesajı Yazan: unalh
Mesaj Tarihi: 04 Ocak 2011 Saat 09:28
mbaykan cahilligimi mazur görün ama Database'inde function nasil olusturucam bunu ayrintili bir sekilde yazma sansiniz varmidir hata yapmamak için.
Birde bende kayitli üçtane firma var her firmanin kendi Database'ne mi bu function olusturucaz.
Ilginize çok tesekkür ederim.
|
Mesajı Yazan: mbaykan
Mesaj Tarihi: 05 Ocak 2011 Saat 10:05
SQL Server Management Studio'dan ilgili databese'ler için ayri ayri olusturulmasi gerekiyor. SET ie baslayip END ile biten satirlar her database için ayri ayri SQLQuery penceresinden olusturulmali. Daha önce Management Studio kullanmadi iseniz Internet'ten kaynak (metin-Görsel) bulabilirsiniz
------------- Mehmet Baykan
|
Mesajı Yazan: unalh
Mesaj Tarihi: 05 Ocak 2011 Saat 11:14
Kullanilan databse üzerine sag kilik yapip yeni SQLQuery olustur dedim ve kodu oraya yapistirdim kayit yap ve TURKCE ismi ile kayit yaptim.
Buraya kadar tamam sonrasinda yapmam gereken islem varmidir.
|
Mesajı Yazan: unalh
Mesaj Tarihi: 05 Ocak 2011 Saat 11:18
SqlText = SqlText + " FROM TBLCASABIT where CARI_ISIM like .dbo.TURKCE('" & esctrk(TextBox1.Text) & "%');"
kodu bu sekli ile güncelledim.
|
Mesajı Yazan: mbaykan
Mesaj Tarihi: 05 Ocak 2011 Saat 15:17
excel tablonuzda da esctrk isimli fonksiyonu olusturduysaniz. (VBA kullaniyorsaniz) artik sorgularinizdaki IGS harfleri database'den dogru birseklide listview'inize gelecektir
ben VBA olarak düsündüm ama siz bunu Visual Basic kullanarak yaziyorsunuz sanirim siz bu fonksiyonu programi yazdiginiz ortamda olusturacaksiniz.
------------- Mehmet Baykan
|
Mesajı Yazan: unalh
Mesaj Tarihi: 05 Ocak 2011 Saat 17:01
Dosya linki asagida bir bakma imkaniniz varmidir ?
http://www.upload.gen.tr/d.php/www/ydwr7n0i/veri_getirme.xls.html - http://www.upload.gen.tr/d.php/www/ydwr7n0i/veri_getirme.xls.html
|
Mesajı Yazan: Conari
Mesaj Tarihi: 05 Ocak 2011 Saat 17:54
Bayagi yol kat edilmis sanirim
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: unalh
Mesaj Tarihi: 06 Ocak 2011 Saat 11:20
S.a Arkadaslar,
Uzun ugraslar sonucunda bir çözüm buldum bu sekilde sikinti yasayan arkadaslar için uygulamayi ekte gönderiyorum.
umarim birilerinin isine yarar.
Hayirli isler.
http://www.upload.gen.tr/d.php/www/p229w5w9/Netsis_Veri_Getirme.xls.html - http://www.upload.gen.tr/d.php/www/p229w5w9/Netsis_Veri_Getirme.xls.html
|
Mesajı Yazan: Conari
Mesaj Tarihi: 06 Ocak 2011 Saat 16:41
gözün aydin :)
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: unalh
Mesaj Tarihi: 06 Ocak 2011 Saat 17:02
gözün aydin :)
|
Mesajı Yazan: AyGuMuS
Mesaj Tarihi: 17 Şubat 2011 Saat 15:18
Yeni bir Funtion yazmaniza gerek yok ki. isi SQL le çözecekseniz Netsisin dbo.TRK Functionu ayni isi görür....
mbaykan Yazdı:
Bu sorun Latin1 karakter setindeki Türkçe (GSIgsi) harflerinden kaynaklanir. Çözümü için Database'inde bir function dbo.TURKCE adinda (veya senin istedigin bir ad)
SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO
CREATE FUNCTION [dbo].[TURKCE](@A NVARCHAR(4000)) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @TMP NVARCHAR(4000) SET @TMP = REPLACE(@A , '~#G', N'Ð') SET @TMP = REPLACE(@TMP ,'~#S', N'Þ') SET @TMP = REPLACE(@TMP ,'~#I', N'Ý') SET @TMP = REPLACE(@TMP ,'~#i', N'ý') SET @TMP = REPLACE(@TMP ,'~#g', N'ð') SET @TMP = REPLACE(@TMP ,'~#s', N'þ') RETURN @TMP END
Excel'de bir function esctrk adinda (ya da senin istedigin bir ad'da)
Function esctrk(x As String) Dim y As String y = Replace(x, "G", "~#G") y = Replace(y, "S", "~#S") y = Replace(y, "I", "~#I") y = Replace(y, "i", "~#i") y = Replace(y, "g", "~#g") y = Replace(y, "s", "~#s") esctrk = y End Function
olusturduktan sonra text'in için
...CARI_ISIM like .dbo.TURKCE('" & esctrk(TextBox1.Text) & "%');" seklinde yazmalisin özet olarak
sql'de .dbo.TURKCE(deger) excel'de esctrk(deger) ile karakterler dönüstürülerek sonuç alinir kolay gelsin
|
------------- SA
|
Mesajı Yazan: mbaykan
Mesaj Tarihi: 17 Şubat 2011 Saat 23:04
Excel'de I veya i ,S veya s, G veya g yazdiginizda esctrk fonksiyonu bu karakterleri direkt olarak 'Ð','Þ','Ý','ý','ð','þ' karakterlerine dönüstüremiyor. siz yapabiliyorsaniz çok iyi, ben de karakter dönüsümünü ~#? ile dolayli dönüsüme tabi tuttum. bu dönüsüm excel'den SQL'e karakter gönderirken geçerli, SQL'den alirken AutoTranslate=False zaten istedigimnizi yapiyor degil mi?
------------- Mehmet Baykan
|
Mesajı Yazan: nurtac
Mesaj Tarihi: 09 Mart 2011 Saat 17:00
peki Netsis'ten gelen bilgide;
S yerine ?
I yerine Y
G yerine ? olarak geliyorsa ne yapabiliriz?? Replace ile Y karakterini I ile degistiirince bu sefer de gerçek Y harfleri de I ile degisiyor.
kolay gelsin.
|
|