UPDATE ile Bir Field daki Metinleri başka bir metin ile değiştirmek

Durum
Üzgünüz bu konu cevaplar için kapatılmıştı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
Merhaba Arkadaşlar ;

T-SQL ile Basit UPDATE cümlecikleri yazabiliyorum.Ama bu sefer yapmam gereken , MARKA sı değişen ürünlerin MARKA isimlerini başka bir isim ile değiştirmem gerekiyor..."VİNAKS" yazan yerleri "VHS" olarak değiştirmem gerekiyor...Bunun için nasıl bir kod yazmam gerekir...

Örnek : Field adı = NAME

Stok Adları :
CA.VİNAKS.STANDART ELEM.VST2.GÜMÜŞ(TAKIM)
CA.VİNAKS.MAKAS.VMK2 057-083.GÜMÜŞ
CA.VİNAKS.MAKAS.VMK1 035-060.GÜMÜŞ
CA.VİNAKS.ORTA KİLİT.VOK1 085-130.GÜMÜŞ

CA.VİNAKS.ALT KARŞILIK.13 AKS.VM010.GÜMÜŞ
CA.VİNAKS.İSP.15 EKSEN.VGR1 450-700.GÜMÜŞ
CA.VİNAKS.İSP.15 EKSEN.VGR3 115-160.GÜMÜŞ


Şu Şekilde olacak

CA.VHS.STANDART ELEM.VST2.GÜMÜŞ(TAKIM)
CA.VHS.MAKAS.VMK2 057-083.GÜMÜŞ
CA.VHS.MAKAS.VMK1 035-060.GÜMÜŞ
CA.VHS.ORTA KİLİT.VOK1 085-130.GÜMÜŞ
CA.VHS.ALT KARŞILIK.13 AKS.VM010.GÜMÜŞ
CA.VHS.İSP.15 EKSEN.VGR1 450-700.GÜMÜŞ
CA.VHS.İSP.15 EKSEN.VGR3 115-160.GÜMÜŞ


yardımlarınızı bekliyorum ,
iyi çalışmalar..
 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,256
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Merhaba,
Aslında bu işi yapacak karaktersel SQL komutu mevcut ("TRANSLATE ()").
Kullanımı konusunda bilgim yok.
Alternatif çözüm isterseniz,
Kod:
Sub Degistir()

'DAO 3.6

Dim db As Database, rs As Recordset

    Set db = OpenDatabase(ThisWorkbook.Path & "\veritabanınızın_adı.mdb")
    Set rs = db.OpenRecordset("Select NAME From tablonuzun_adı Where NAME Like'*VİNAKS*'")
    
    Do While Not rs.EOF
        rs.Edit
        rs("NAME") = Replace(rs("NAME"), "VİNAKS", "VHS")
        rs.Update
        rs.MoveNext
    Loop
    
    db.Close
    
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
Merhaba,
Aslında bu işi yapacak karaktersel SQL komutu mevcut ("TRANSLATE ()").
Kullanımı konusunda bilgim yok.
Alternatif çözüm isterseniz,
Kod:
Sub Degistir()

'DAO 3.6

Dim db As Database, rs As Recordset

    Set db = OpenDatabase(ThisWorkbook.Path & "\veritabanınızın_adı.mdb")
    Set rs = db.OpenRecordset("Select NAME From tablonuzun_adı Where NAME Like'*VİNAKS*'")
    
    Do While Not rs.EOF
        rs.Edit
        rs("NAME") = Replace(rs("NAME"), "VİNAKS", "VHS")
        rs.Update
        rs.MoveNext
    Loop
    
    db.Close
    
End Sub
Merhaba Anemos ; Öncelikle göstermiş olduğun ilgi için teşekür ederim.

Yazmış olduğun VBA komutu sanırım veriyi direkt excel de arıyor...
Sadece DB adını ve Table adını değiştirdiğim de daha ilk Dim satırında hata verdi...Sanırım SQL Connection kurmak lazım...


Tercihen ;
Ben Excel ortamından değilde direkt SQL Query Analyzer dan bu işi çözmek istiyorum...Çünkü DB , "mdb" değil "MDF"...

Üstelik EXCEL de bu VBA in SET hızı ile T-SQL in SET hızı arasında fark olacaktır...
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,256
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Merhaba,
Jet SQL ilk mesajımdaki "TRANSLATE" komutunu tanımıyor. O halde .mdf veritabanı için arşivimdeki kaynaklarda geçen şu komutları kullanabilirsiniz.

TRANSLATE()
REPLACE()
Ör:
Kod:
Update tablonuz Set Name=Translate('VİNAKS','VHS') Where Name Like'%VİNAKS%'
 
Son düzenleme:
Katılım
8 Temmuz 2004
Mesajlar
254
Excel Vers. ve Dili
office 2007-mssql 2008 R2
Selam,

"replace" komutu olacak gibi,

Kod:
Select replace(NAME, 'VİNAKS', 'VHS') From tabloismi where NAME like '%VİNAKS%'

Kolay gelsin.
 
Katılım
12 Ekim 2006
Mesajlar
2
Excel Vers. ve Dili
2003 Türkçe
Selam,

"replace" komutu olacak gibi,

Kod:
Select replace(NAME, 'VİNAKS', 'VHS') From tabloismi where NAME like '%VİNAKS%'

Kolay gelsin.
Tekrar Merhabalar ; Yapmak istediğim MARKA bilgi değişikliği için , toplamış olduğum feedback lere göre , sorun SQL den CURSOR tanımlaması ile çözülebilirmiş...CURSOR un KAba hatlarını bitirdim...Fakat...Field içierisindeki METNİN okunması ve daha sonra yeni metnin eski metnin ortasında bir yere SET edilmesi gerekiyor...Bu bölümde yetersiz kalıyorum...Tek başına UPDATE veya REPLACE ile sorun çözümlenemiyor...

Ben bir örnek veriyorum...takıldığım satırı da " " içerisine alıyorum...

DECLARE @NAME VARCHAR(50)
DECLARE @NAME2 VARCHAR(50)
DECLARE markadegistir CURSOR
FOR SELECT NAME FROM LG_086_ITEMS
OPEN markadegistir
FETCH NEXT FROM markadegistir INTO @NAME
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @NAME="--------------------------------------"

BEGIN
UPDATE LG_086_ITEMS SET NAME=@NAME2 where NAME=@NAME
END
FETCH NEXT FROM markadegistir INTO @NAME
END
CLOSE markadegistir
DEALLOCATE markadegistir
 
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
MERHABA ARKADASLAR ; NET ortamında araştırdığım konu ile ilgili bir tane örneğe rastlayamıyınca...SQL Server 2005 ISBN : = 975 02 0316 X kitabının yazari Yasar Gozudeli ye konuyu ilettim...Gelen CEVAP sorunu cozdu...SYNTAX bilgi yetersizliği ile açıklanabilecek...bir cevap ile çözüme ulaştık...

Doğru CEVAP :

UPDATE LG_086_ITEMS
SET [NAME]=REPLACE([NAME],'.VİNAKS.','.VHS.')

tek satırlık bir kod ile çözüldü...

hepinize iyi çalışmalar...
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst