ibdataset kayıtlarını nasıl iptal edebilirim?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

ibdataset kayıtlarını nasıl iptal edebilirim?

Mesaj gönderen nitro »

s.a.
bir ablo düşünün. öğrenci bilgileri var.
ibdatset ile ismi b harfi ile başlayanları aldım bi dbgride.
sonra o kayıtlar üzerinde bissürü değişiklik yaptım. kayıt ekledim, mevcut kaydın bilgilerini değiştirdim(grid üzerinden). sonra bunların hepsini iptal etmek istiyorum.
yani datasetin bağlı olduğu tabloya b harfi ile başlayan verileri almadan önceki durumuna geri döndürmek istiyorum. nasıl olur?
bir de bu datasetten sorgu almak istiyorum. datasetteki bir sütunun değerleri toplamı. ama bu topam bulma işleminin dataseti hareketlerndirmesini (birinci kayda konumlan, son kayda kadar deger fieldini toplama ekle gibi) istemiyorum. mesela 30 kayıt var datasette ben 7.kaydın toplama eklenecek fieldini değiştirdim. altta toplama hemen yansısın istiyorum.
yardımlarınız için şimdiden teşekkürler.
Misafir

Mesaj gönderen Misafir »

merhaba.
kayıtların geri alınması işlemi roolback (commit'in tersi) komutuyla yapılıyor bildiğim kadarıyla..ikinci işlem için de bookmark olayına girmek lazım..yani bulunduğun kaydı bi yere atıyorsun işlem bittikten sonra tekrar o kayda konumlanıyorsun.
kolay gelsin.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

datasette rollback işlemi yapılabilirmi bilmiyorum. zaten şu anda uygulama ortamım yok. dataset'in cancelupdates özelliği var.
bu özellik cached updates'i iptal ediyor. oradan bi çözümü olucak gibi ama denemelerimde bir sonuç alamadığım için kaldım orda.
ayrıca datasette sadece bir kaydın veya aktif kaydın değişikliklerini iptal etmek kolay ama satırlar sayfalar dolusu veri girildikten sonra bir iptal işlemi çok daha farklı olmalı diye düşünüyorm. çünkü datasetin bir kaydından başka bir kaydına hareket edildiği zaman dataset'in modify veya insert sql kodları hemen yeni bilgileri ana tabloya yansıtıyor.
Misafir

Mesaj gönderen Misafir »

yalnız gözden kaçan bişey var ki; commit etmeden veri işlenmiyor bildiğim kadarıyla..
kolay gelsin.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

transaction commitretaining durumunda. o nedenle hemen commit yapıyor. ama dataset'i farklı bir transaction'a bağlayıp commit olayını kodla kontrol etmek bir çözüm olabilir.
Misafir

Mesaj gönderen Misafir »

böyle durumlarda veri girişini tablo erişimi olmayan bileşenlerle sağlamak en mantıklı çözüm bence.örneğin stringgrid..işlem yapılacak veriler sorgulanıp stgride aktarılır aynı zamanda tablodan silinir ve tampon bir tabloya kaydedilir, gerekli işlem yapılır, düzenlemeden sonra tekrar ana tabloya yansıtılır ve tampon tablodan silinir..ki elektrik kesintisi, makina kilitlenmesi gibi durumlarda bu tür bi kullanım daha sağlıklıdır fikrimce.
kolay gelsin.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

insanlar bence bu tür işlemlerle sık sık karşı karşıya kalıyorlardır. yani sonuçta dataset2in böyle bir yeteneği vardır bence. yoksa büyük eksiklik. ben olayı stringgridde hallederim ama bu olay hep aklıma takılı bir hata olarak kalır. vardır illaki bi yolu bence..
yardımların için çok teşekkürler delphi_coder kardeşim. kral adamsın vesselam
Misafir

Mesaj gönderen Misafir »

şimdiye kadar incelediğim ve geliştiğirdiğimiz projelerde genelde stgrid gibi veri bilinci olmayan bileşenler kullanılıyor.ancak elbette ki veri bilinçli bileşenler için de yöntemler var.iyi bir kontrol gerektiği ve bunun da zahmetli olacağı için bu tür bir yolu tavsiye ettim..örneğin runtime defaultaction propertysinin değeri bu işlemden önce değiştirilerek çözüm getirilebilir..ancak dediğim gibi çok iyi bir kontrol mekanizmasını da beraberinde monte etmek gerekir diye düşünüyorum.
yardımcı olabildiysem ne mutlu bana.
kolay gelsin.
Misafir

Mesaj gönderen Misafir »

özellikle edit etmedim ki daha dikkat çeksin..

tampon tablo kullanmanın bir yararı da;
örneğin elektrik kesilmesi, sistem kilitlenmesi ya da benzer durumlarda, yüklenen fişin tampon tabloda kalmasıyla, açılışta ya da programcının belirleyeceği bir durumda tampon tablodaki kayıt sayısı kontrol ettirilmek şartıyla kullanıcıya; "son çalışmanız yarım kalmış" gibi bir mesaj vererek daha profesyonel bir izlenim bırakılabilir sanırım.

kolay gelsin.
snofru
Üye
Mesajlar: 204
Kayıt: 19 Ağu 2004 02:57
Konum: /local/usr/src
İletişim:

Mesaj gönderen snofru »

Selam. Transaction desteği olan bir VT ile çalışıyorsanız ki Fb/Ib bildiğiniz üzre böyledir, siz Dataset'i Post komutuyla kaydetseniz bile Transaction.CommitRetaining yapmadan VT ye tamamen işlenmez. Keza o zaman RollbackRetaining de olayı geri almak için. (Sanırım, CommitRetaining den sonra RollbackRetaining yapmak kurtarmıyor... Mantıklı olanıda bu.)

Transaction'un AutoDefaultAction gibi bi olayı vardı onu da RollbackReatining yaparsanız elektrik kesilince, sular gidince, logar patlayınca falam aktif transaction işlemini geri alır. Ki zaten Transaction u kaydetmeden yada rollback etmeden de formu kapatırsan görürsün ki kaydolmaz... Yani milissaniyelik bir Transaction.CommitRetaining olayı da lelektrik kesilmesine denk gelirse oha falam yani...

İkinci olayına gelirsem, sayın delphi_coder in de dediği gibi stringgrid en temizi... illa DBGrid kasacam dersen o haraket işlemini yapman lazım... Grid in OnColExit olaylarından tetiklemen gerekir, toplamları bulan prosedürü...


Hepinizi seviyorum... (delphi_coder bayramda görüşcez dimi :D)

Taner DOĞAN
Cevapla