Table1.Append; Table1.Insert

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Table1.Append; Table1.Insert

Mesaj gönderen husonet »

Arkadaşlar merhaba

Delphide kafama takılan birkaç soru var bunları sormak yapmış olduğum yöntemler doğrumu merak ediyorum şüphelerime cevap verirseniz sevinirim.

1-

Table1.Append; Table1.Insert

Ben kayıt eklerken Table1.Insert kullanıyorum.

2-
Kayıt ekleme ve değiştirme işlemlerimi ayrı pencerede yapıyorum. Fakat kaydı eklediğim, değiştirdiğim ve sildiğim kayıtlar altta bulunan pencerede DBGride güncellenmiyor.

bende bunları tekrar sıralama yapıyorum. Değiştirdiğim veya eklediğim kaydı bir değişkene atıyorum While döngüsüyle database i tarattıktan sonra alt pencerede eklediğim ve sildiğim kaydı aktif hale getiriyorum.

acaba uyguladığım yöntemler doğrumu.


3-
Bir tabloda kayıt olup olmadığını nasıl anlayabiliriz ?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

1. Append sona ekleme yapar, Insert kursörün bulunduğu yerin öncesine ekler kaydı. Dosyaya kaydetme açısından bir farkı varmı hiç araştırmadım ama ben hep Append kullanıyorum.

2. Ne demek istediğini tam anlayamadım ama uygun olmayan bir yöntem olduğu belli oluyor :lol: Kaydı sildiğin anda, grid'tende gitmesi lazım. Biraz daha detay anlatırsan öneri yapabilirim. DBEdit vs. gibi veri bilinçli bileşenler kullanıp, ekleme ve düzeltme aynı ekranda yap.

3. En güzeli SQL ile bulmak. Gerekli cümlecik şöyle olmalı :

SELECT COUNT(*) FROM TABLO_ADI

Kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Faklı formlarda ekleme ve değiştirme yaptığım için altta kalan form'da güncelleme olmuyor. Günceleme işini AdoDataSet1'i tekrar kapatıp açtıktan sonra güncelleme yapıyor. Fakat ya en baştaki kayda konumlanıyor ya da en sondaki kayda ben de değiştirdiğim veya eklediğim kayda konumlanmasını istiyorum aktif kayıt ya eklediğim kayıt olacak ya da değiştirdiğim bu yüzde while döngüsü ile taratma yapıyorum 3 formun kullanıldığını düşünün ilk form data kayıtlarının DBGrid içinde listelenmesi 2 nci form kayıt ekleme 3 n cü form kayıt değiştirme.

Teşekkür Ederim.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

bir soru daha bu alttaki ve üstteki formdaki bileşenler aynı Dataset'e bağlı değil mi? Aynı datasete bağla değilse.

Kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Çok sağolun çok teşekkür ederim. Gercekten bu yöntem hiç aklıma gelmemişti hiç kod yazmadan işi bitirmek güzel.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Yalnız silme işleminde problem oluyor formumda AdoDataSet ve AdoQuery kullanıyorum silme işlemimde AdoQuery i kullandığım için DBGrid güncelleme yapmıyor (DbGrid AdoDataSet'e bağlı) bunu nasıl halledebiliriz yardımcı olabilirseniz sevinirim.

Ben bu yöntemi yine While tablo taratma ile çözüyorum ama çok kod yazmam gerekiyor.

Teşekkür Ederim.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hocam çok yanlış bir teknik kullanıyorsun :!: Bu while ile döngü tekniğini unut.

Kayıtlar üzerinde başka bir dataset (veriye ulaşmak için kullanılan bileşen Table, Query, TDataset) ile işlem yapınca ya Refresh ile kayıtları tekrar alırsın ya da esas Dataset'i kapatıp açarsın. Yani

Table1.Refresh; veya

Table1.Close;
Table1.Open; // kayıtların son halini aldık

Bunun dışında döngü ile bir şey yapmana gerek yok. Ben senin kullandığın yapıda kullanıyorum, nasıl yaptığımı anlatayım :

1. Formu açtığım zaman grid var ve bu Dataset1'e bağlı.

2. Kayıt Ekle dediğim zaman ayrı bir formu Dataset1.Append; ile açıyorum. Burdaki tüm DBedit vs. önceki formdaki Dataset1'e bağlı. Tamam derse Dataset1.Post ile kaydediyorum, hayır derse Dataset1.Cancel ile iptal ediyorum.

3. Kayıt Düzelt dediği zaman Ekle'de kullandığım formu bu sefer Dataset1.Edit ile açıyorum. Değişikliklerden sonra Tamam derse Dataset1.Post ile kaydediyorum, hayır derse Dataset1.Cancel ile iptal ediyorum.

4. Kayıt sil derse de direk hiçbir form açmadan Dataset1.Delete komutu ile siliyorum.

Aynı dataset'te işlem yaparsan Refresh vs. yapmana pek gerek kalmaz. Ancak toplu kayıt sileceksen bunu ayrı bir dataset ile (Query, TDataset vs.) yapıp, esas tabloyu Refresh etmen en uygun yol.

Umarım faydası olur.

Kolay gelsin.
Kullanıcı avatarı
mehmet_turecan_cakmak
Üye
Mesajlar: 132
Kayıt: 02 Tem 2003 01:08
Konum: Afyon
İletişim:

güncelleme

Mesaj gönderen mehmet_turecan_cakmak »

size şöyle bir alternatif sunmak istiyorum silme ekleme ve düzeltme işelmlerinden sonra kayıt yaptığınız tableyi güncelleyin yani yapacağınız tek şey table1.refresh yapmak sanırım bu işinizi görür...

kolay gele...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bu da hiç uygun bir yöntem değil :!:

arkadaşlar olayı 300-500 kayıtlık tablolar ile düşünmeyin. Belki şu an her işlemden sonra Refresh sıkıntı olmuyordur ama yarın bir gün 300-500 bin kayıtlık tablolarda çok büyük sıkıntılar çıkar.

Sadece çok gerektiği durumlarda Refresh ve Kapa/Aç olayı yapın.

Slogan belli : Az alan (field), az kayıt, az Refresh :wink:

Kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Aynı dataset ile refresh yaptığım zaman hata veriyor yapamıyorum.(Gerci aynı dataset ile kullanmama gerek yok demişsiniz)
Ama bir problem var DBGrid olan form Sql ile İşlem No alanına göre sıralanmış ve eklediğim kayıt sıralamaya girmiyor DBGridin en alt satırına ekleniyor sıralamaya soktuğum zamanda aktif kayıt olmuyor bunu nasıl çözebiliriz.

Birde while konusunda haklısınız o yöntemi unutmak çok zor dos ta programlama yaparken çok alıştığım bir yöntemdi ama programlarımı ağırlaştırmaya başladığını farkettim ve bu sebebten dolayı yeni yöntemler araştırıyorum ve bu günde vermiş olduğunuz fikirler güzeldi çok teşekkür ederim.

Bir de Mustafa Bey sizin kullandığınız yöntemle benim ki hemen hemen aynı. Bende Ekleme formuna Nakit Tahsilat ile Nakit Ödeme işlemlerini yaptırtıyorum Değiştirme formuna Nakit Tahsilat ve Nakit Ödeme işlemlerinin değiştirme olaylarını yaptırtıyorum aslında ekleme ve değiştirme için tek bir forum kullanabilirdim ama kod kontrolümü kaçırmak istemiyorum çünkü kodlarımın arasına pek açıklama yazmıyorum inlşallah bir gün bunada alışacağım.

Teşekkür Ederim
İyi Geceler.
Cevapla