Skip to main content

AccessTr.neT


Silinen Otomatik Sayının Yerini Doldurma

Silinen Otomatik Sayının Yerini Doldurma

#1
Hocam uygulama Mysql veri tabanı ile denediğimizde Kwerenda2 sorgusu Birleşme ifadesi desteklenmiyor hatası veriyor.


Kod:
SELECT Min(Tabela1.ID) AS OstID
FROM Tabela1 LEFT JOIN Tabela1 AS Tabela1_1 ON Tabela1.ID = Tabela1_1.ID -1
WHERE (((Tabela1_1.ID) Is Null));


Sorgu içindeki Sql kodu içinde birleşmenin sonunda bulunan matematiksel işlem sorunu doğuruyor.Lakin araştırmam sonucu bir çözüm bulamadım değerli yardımlarınızı rica ediyorum.

Kod Kaynağı

[Resim: do.php?imgf=149251352246081.bmp]
[Resim: do.php?imgf=149251352988132.bmp]
.zip autonr.zip (Dosya Boyutu: 24,08 KB | İndirme Sayısı: 3)
serkandiker, 06-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#2
Kayıt sildiğinizde otomatik sayılar arasında boşluk olmasını mı istemiyorsunuz?
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#3
Aynen
serkandiker, 06-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#4
Madem size böyle bir şey gerekiyor o zaman tablonuzdan otomatik sayıyı kaldırın. Otomatik sayı size sayıları "sıra" ile göstermek için değildir. Kayıtlar tutarlı olsun, kayıt bütünlüğü olsun diye vardır. Sıra için "Otomatik Sayı" kullanılmaz. Bunun yerine yeni bir alan eklersiniz ve her kayıt silinmesinden sonra bu alandaki kayıtları yeniden verirsiniz. Kısacası otomatik sayıya bulaşmakla hata yapıyorsunuz Img-grin
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#5
(18/04/2017, 14:52)alpeki99 yazdı: Madem size böyle bir şey gerekiyor o zaman tablonuzdan otomatik sayıyı kaldırın. Otomatik sayı size sayıları "sıra" ile göstermek için değildir. Kayıtlar tutarlı olsun, kayıt bütünlüğü olsun diye vardır. Sıra için "Otomatik Sayı" kullanılmaz. Bunun yerine yeni bir alan eklersiniz ve her kayıt silinmesinden sonra bu alandaki kayıtları yeniden verirsiniz. Kısacası otomatik sayıya bulaşmakla hata yapıyorsunuz Img-grin

bu uygulamada Access veri tabanı ile her hangi problem olmuyor.Uygulama aradaki silinmiş numaraları buluyor.Yani  498 500 arada 499 var onu bulup sırayı tamamlıyor yalnız mysql datebase üzerinde bu hata iletisi belirmekte hocam
serkandiker, 06-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#6
Uygulamayı biliyorum yıllar öncesinde birisi yapmış, makalelere konu olmuş vs. ancak temelde mantık yine değişmiyor. Sizin yapmak istediğiniz şey şu:

Herkesi bir TC Kimlik Numarası var. Birgün birisi ölüyor ve o kişinin TC sini aradan kaldırıp tüm Türkiye'ye senin TC numaran değişti artık yeni numaran bu diyorsunuz. Yalnız burada bir sorun var. Çünkü tüm resmi ve özel kurumlarda tüm ödemeleriniz eski TC numaranız ile kayıtlı. Eski numaranız ile tüm işleriniz bire-çok şeklinde ilişkili olduğundan sorunlar ortaya çıkacak.

Birincil anahtar işte bu işe yarar. Sizin bunu Access ile yapabiliyor olmanız doğru olduğu anlamına gelmez. Eğer sıra numarasına ihtiyacınız varsa bunu ayrı bir alanda saklamalısınız.

Diğer yandan MySql ile çalışmamasına gelecek olursak gayet doğal çünkü her ikisi farklı veritabanı motoruna sahipler. MySql de :

ALTER TABLE tablo_ismi AUTO_INCREMENT = 1

ile  tablo ismini vererek tekrar birincil anahtar alanı 1 den başlatabilirsiniz ancak bunun için tablonun boş olması lazım. Farklı bir şekilde ise şöyle çözebilirsiniz:

önce mevcut birincil anahtar sütun hangisi ise onu silelim. Örnekte alanımızın adı "id":

ALTER TABLE `tablo_ismi` DROP Column `id`;

sonrasında yeni bir sütun ekleyelim ve sildiğimiz sütun ile aynı özelliklere ve isime sahip olsun:

ALTER TABLE `tablo_ismi` ADD Column `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`);

şeklinde tablonun başına birincil anahtar otomatik sayı bir alan eklemiş olursunuz ve tüm sayılar 1 den başlayarak sırayla devam eder.

Bu arada bu işlemin yapılmaması gerektiğini söylemiş miydim? Lol
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task