ibdataset kayıtlarını nasıl iptal edebilirim?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
ibdataset kayıtlarını nasıl iptal edebilirim?
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.
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.
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.
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.
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.
kolay gelsin.
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
yardımların için çok teşekkürler delphi_coder kardeşim. kral adamsın vesselam
ş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.
yardımcı olabildiysem ne mutlu bana.
kolay gelsin.
ö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.
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.
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
)
Taner DOĞAN
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

Taner DOĞAN