IBDataSet Araya Kayit Eklemek.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

IBDataSet Araya Kayit Eklemek.

Mesaj gönderen cempolat »

IBDataSet Araya Bir Kayit ekledigimde en son kayda atiliyor.

Ornegin 1 islem sirasi var.

1-
2-
.................. bu satiri insert eddim bilgilerle doldurdum asagiya inince en alt a gidiyor.
3-
4-

Ekledigim kaydin ekledigim satirda kalamasini istiyor.
Normal Table , ClientDataSet Öyle.
Kullanıcı avatarı
Query
Üye
Mesajlar: 363
Kayıt: 29 Ara 2003 05:13

Mesaj gönderen Query »

Bu senin index lerinle ilgilidir. Sıralamayıda ona göre yapar.

Benim tavsiyem eğer araya her zaman kayıt alman gerekiyorsa bir alan daha oluşturup mesela her kayıtta 10 ar 10 ar arttırırsan araya kayıt atabilirsin. Sıralamayı da ona göre yaparsın.

Kod: Tümünü seç

Select * from TABLO_ADI Order By SIRA
Kolay gelsin
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

indexlerimi : ÖRNEK - Firma_kodu

SELECT * FROM TABLO_ADI ORDER BY FIRMA_KODU

Firma_kodu

10 a firmasi
20 b firmasi

40 c firmasi
50 d firmasi

z.firmasini 30 satira ekliyorum ama henüz data kayitli degil.Son Kayda Gönderiyor.

Kayit ettikden Sonra Yerine Giriyor. Benin Sorunun Kayit Etmeden Araya
Kaydi girmek , kayit edilesine kadar orada kalmasini saglamak.
Kullanıcı avatarı
Query
Üye
Mesajlar: 363
Kayıt: 29 Ara 2003 05:13

Mesaj gönderen Query »

Geçici olarak şöye bişi uygulayabilirsin.

Firma kodunu 30 belirlersin ve post edersin. Sonra o kayda gelirsin ve editlersin. O zaman diğer bilgileri girerken senin istediğin yerde olacaktır. Commit edersen kalıcı olarak kaydedersin. Kesin kayıt olmayacaksa rollback yaparsın.

Başka yolu var mı bilmiyorum. Umarım işine yarar.
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

POST ettim ama sonuc degismedi POST'DAN sonra kayit yine sona gitti
DBGrid içinde en sona atti.

Normal TABLE 'DE recno -1 diye aliyor .
IBDataSet'de recno 28 yani son kayit diye arayi aciyor.RECNO degi_tirebilsen olacak galiba ama recno'yuda degistiremiyorum.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
recno o anki indekse göre kaydın sırasını verir. yani recno yu değişitrme şansın yok.
olay tamamen indeks ve refresh ile alakalı. ibdataset yeni girilen kayıtları en sona atar. commit edip. tabloyu kapatıp açarsan indekse göre olması gereken yere geçmesi lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

Peki Kayit Edmeden Araya Eklemek istedigim Kayitlarin orada kalmasini nasil saglayacagim.


normal Table 'de kayit edmeden ekledigim kayitlar ekledigim yerde kaliyor bunun IBDATASET Bir çözümü yokmu.


Sanki SELECT * FROM MUSTERI ORDER BY MUS_KODU

Sadece ilk yuklediginde gecerli gibi sonraki hareketleri bu siraya bagimli kalmiyor.
Kullanıcı avatarı
eduran
Üye
Mesajlar: 52
Kayıt: 03 Tem 2003 04:02

Mesaj gönderen eduran »

slm. benzer bir sorun bende de var. indexi de sildim. fakat araya kayıt eklediğim zaman sona gidiyor. bazende kendi kafasına göre herhangi bir yere atıyor. bunun bir çözümü var mı acaba?
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam eğer proğramınınızda Pk kullanmış iseniz araya kayıt eklerken en sona kayıta gitmesi normaldir .Bu refresh veya commit ile alakalı değil bence .eğer illa araya kayıt eklemek istiyosanız o zaman tablolarında generator tanımlamayacan ve Pk kullanmıyacan .Başka çözümünüde düşünemiyom.eğer order by kullansanda sadece o anda kayıt eklendiğini görürsün sonra yine en son kayıda gitttiği görülür.
kolay gelsin
Kullanıcı avatarı
eduran
Üye
Mesajlar: 52
Kayıt: 03 Tem 2003 04:02

Mesaj gönderen eduran »

kardeş ne index var ne de generator. commit ettiğinde direk olarak sona ekliyor.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

peki tablo yapın nasıl master-detay bağlantısını nasıl yaptın onu biraz açarmısın
Kullanıcı avatarı
eduran
Üye
Mesajlar: 52
Kayıt: 03 Tem 2003 04:02

Mesaj gönderen eduran »

master detay tablo yapısından kaynaklanıyor olabilir diye veritabanı üzerinde denedim. bir tane tablo oluşturdum . bir tane de integer tipli alan oluşturdum. ve araya kayıt ekledim. her seferinde sona ekliyor. bunu delphi tarafında da yaptım değişien bişey yok. tablo tek tablo. master detail falan yok. bir türlü çözemedim.


deneme
--------
alan (integer)
Kullanıcı avatarı
eduran
Üye
Mesajlar: 52
Kayıt: 03 Tem 2003 04:02

Mesaj gönderen eduran »

şöyle bir çözüm buldum gayet düzgün çalışıyor. :arrow:

[code]konular (table)
---------
id (pk)
konu (varchar 10)[/code]

veritabanına; :arrow:

[code]CREATE PROCEDURE IDINCKONULAR (
GELENID INTEGER)
AS
DECLARE VARIABLE SECID INTEGER;
begin
for
select id from konular where id>=:gelenid order by id desc into :secid
do
begin
update konular set id=id+1 where id=:secid;
end

insert into konular (id) values (:gelenid);

suspend;
end[/code]

delphiye bir button ve icine; :arrow:

[code]
var bos:string;

bos:=konularID.Text;
IBSQL1.Close;
IBSQL1.SQL.Text:='execute procedure idinckonular ('+konularID.Text+')';
IBSQL1.ExecQuery;
konular.close;konular.open;konular.Locate('id',bos,[]);[/code]

--
kolay gelsin
Cevapla