Sayfayı Yazdır | Pencereyi Kapat

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 Clap

-------------
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 :)  Exclamation


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....
 
Orjinalini yazan: mbaykan 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.



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