Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > Diğer Yazılımlar > SQL
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

SQL Yapısal sorgulama dili hakkında sorularınızı buraya sorabilirsiniz.

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 13-05-2006, 10:00   #1
ilkaykteke
 
Giriş: 25/02/2006
Mesaj: 56
Varsayılan firmalara otomatik bir cari kodu vermek

firmalar için tüm bilgilerini görebileceğim bir data base hazırlamak istiyorum. bunun icin firmalara kendi kodunu verip onun üzerinden sorgulamak istiyorum. örneğin firmanın adı vatan plastik san. a.ş. bundan önceki satırda: vtn_1 kodunu verdirebilirmiyiz. tabi burada şöyle bir sorun da olabilir: başka bir firmanın adı vatan emaye san. ve tic. a.s. olunca da buna özgün bir kod olmalı. bunun icin ne yapmam gerekir?
ilkaykteke Çevrimdışı   Alıntı Yaparak Cevapla
Eski 15-05-2006, 10:08   #2
red_lion_72
 
red_lion_72 kullanıcısının avatarı
 
Giriş: 08/07/2004
Şehir: istanbul
Mesaj: 254
Excel Vers. ve Dili:
office 2007-mssql 2008 R2
Varsayılan

Selam,

Bunun için nasıl bir kod sistemi vermesini istediğinize bağlı. Örneğin ilk kelimelerin 1. ve 3. harflerini kod olarak verebilirsiniz. Eğer aynı koddan var ise var ise sıraya bakıp 1 arttırabilirsiniz.

Bunun için MSSQL de trigger kullanabilirsiniz.

Kolay gelsin.
__________________
Zekasız kuvvet yıkabilir ama yapamaz...C.Şahabeddin
Asla herşeyi bildiğini sanma. Gerçekten çok bilgili olsan da "ben cahilim" diyebilecek cesaretin daima olsun. Ivan Pavlov
red_lion_72 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 15-05-2006, 10:45   #3
ilkaykteke
 
Giriş: 25/02/2006
Mesaj: 56
Varsayılan

biraz daha acabilirmisiniz?
ilkaykteke Çevrimdışı   Alıntı Yaparak Cevapla
Eski 15-05-2006, 14:02   #4
red_lion_72
 
red_lion_72 kullanıcısının avatarı
 
Giriş: 08/07/2004
Şehir: istanbul
Mesaj: 254
Excel Vers. ve Dili:
office 2007-mssql 2008 R2
Varsayılan

Selam,

Size bir örnek yapabilirim aslında. Siz bana sütun isimlerini verin. Anlattığım işlemler MSSQL'de geçerli.


Kolay gelsin.
__________________
Zekasız kuvvet yıkabilir ama yapamaz...C.Şahabeddin
Asla herşeyi bildiğini sanma. Gerçekten çok bilgili olsan da "ben cahilim" diyebilecek cesaretin daima olsun. Ivan Pavlov
red_lion_72 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 15-05-2006, 17:38   #5
ilkaykteke
 
Giriş: 25/02/2006
Mesaj: 56
Varsayılan

ÖRNEK SÜTUNLARIMIZ ( "/" İŞARETİYLE AYRILIYOR)
CARİ KODU/CARİ ÜNVANI/VD/VD NO
HTT2526/HİTİT MOBİLYA/A.KURUMLAR/256 256 2526

GİBİ..
ilkaykteke Çevrimdışı   Alıntı Yaparak Cevapla
Eski 16-05-2006, 00:45   #6
red_lion_72
 
red_lion_72 kullanıcısının avatarı
 
Giriş: 08/07/2004
Şehir: istanbul
Mesaj: 254
Excel Vers. ve Dili:
office 2007-mssql 2008 R2
Varsayılan

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
--Trigger oluşturuyoruz
CREATE TRIGGER carikodver 
ON DATABASEISMI--buraya databaseisminizi yazın
--ne için tanımlıyoruz bu trigger'ı? insert için
FOR  insert AS
--cari unvandaki ilk harfleri almak için değişkenleri tanımlıyoruz
DECLARE @ILKHARF VARCHAR(1)
DECLARE @ORTAHARF VARCHAR(1)
DECLARE @SONHARF VARCHAR(1)
--burada ise yine cari ünvandaki boşlukları bulmak için(bulduktan sonra ilk gelen harfi alacaz) değişken tanımlamaya devam
DECLARE @ORTABOSLUK AS INTEGER
DECLARE @SONBOSLUK AS INTEGER
--tablonuzda otomatik artan bir ID sütunu(REC_ID) olduğunu varsaydım. uniqe bir kod oluşturmak için buna ihtiyacımız var.
DECLARE @SONID VARCHAR(5)


--değişkenleri tanımladık. Değişkenlere atamalar yapıyoruz....
SELECT  @SONID=REC_ID, 
@ORTABOSLUK=CHARINDEX(' ', [CARİ UNVANI], 1),
@SONBOSLUK=CHARINDEX(' ', [CARİ UNVANI], @ORTABOSLUK+3 ), @ILKHARF=LEFT([CARİ UNVANI],1),
@ORTAHARF=SUBSTRING([CARİ UNVANI], @ORTABOSLUK+1, 1), 
@SONHARF=SUBSTRING([CARİ UNVANI], @SONBOSLUK+1, 1)
FROM DATABASEISMI

--Bütün atamaları yaptık. Artık insert yapıldığında SQL server'ı tetikleyelim.
 
Begin
--yukarıda bulduğumuz kodları yanyana yazabilmek için başka değişken tanımlayalım
DECLARE @KODVER VARCHAR(20)
--bu değişkene bulduğumuz ilk harfleri atayalım...
SET @KODVER=(@ILKHARF+@ORTAHARF+@SONHARF+@SONID)
--Ve nihayet update komutumuzu çalıştırıp insert yapılan REC_ID'deki Cari kod kısmına bu değişkeni yapıştırıyoruz.
UPDATE DATABASEISMI SET [CARİ KODU]=@KODVER WHERE REC_ID=@SONID
End


Yukarıdaki kodları Query Analyzer'da çalıştırın. Siz her insert yaptığınızda(yeni kayıt girdiğinizde otomatik olarak ilk 3 kelimenin baş harflerini ve record numarasını alarak) eşsiz bir kod üretmiş olacak.

Bu arada bu kadar geç kalmasının nedeni eğer aynı kod varsa sıra numarasını bir arttıracak function yapmaya çalıştım. Onu da aşağıya yazıyorum. Oda çalışıyor ama gelen tüm dataları alıyor. Belki ilgilenen olur. takıldığım yeri söyler diye onu da yazmak istiyorum(1 saatim gitti üzerinde boşa gitmesin hehe... )



Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
create function kod_ayir(@kod VARCHAR(50))
returns float as 
BEGIN
  Declare @numara as float (4)
  declare @cari as varchar (50) 

  Select @cari=[CARİ KODU] from DATABASEISMI where left([CARİ KODU], 4)= left(@kod, 4)
  
IF len(@cari)=7 SET @numara=CAST(RIGHT(@cari, 2) AS FLOAT(4))+1

else 

set @numara= CAST(RIGHT(@cari, 1) AS FLOAT(4))+1



  Return @numara

END

Kolay gelsin.
__________________
Zekasız kuvvet yıkabilir ama yapamaz...C.Şahabeddin
Asla herşeyi bildiğini sanma. Gerçekten çok bilgili olsan da "ben cahilim" diyebilecek cesaretin daima olsun. Ivan Pavlov
red_lion_72 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 16-05-2006, 13:08   #7
ilkaykteke
 
Giriş: 25/02/2006
Mesaj: 56
Varsayılan

güzel bir örnek calisma oldu diye düsünüyorum. daha denemedim ama dener denemez size dönerim. tesekkurler tekrar.
ilkaykteke Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 12:42


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Palet- Çerkezköy Palet- Çorlu Prefabrik- Çorlu Sürücü Kursu- Çorlu Sandviç Panel- Şişli Avukat- Korona Test Kalemi- Çorlu Vinç- Çorlu Pimapen Tamiri-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden