1

Konu: Cursor cannot be modified because it contains an unsaved record.

Merhaba,

Tasarlamış olduğumuz formda arasıra "Cursor cannot be modified because it contains an unsaved record." hatasını alıyoruz. Ancak bu hatanın neyden kaynaklandığını bir türlü bulamadık.

Yardımcı olursanız seviniriz.

/o---------------------o\
     www.haser.com
\o---------------------o/

2

Re: Cursor cannot be modified because it contains an unsaved record.

http://fox.wikis.com/wc.dll?Wiki~VFPUnd … edBugs~VFP

burada konusun gecmis eger formda grid varsa beforrowcolchange ta tableupdate()  kullanilmasi tavsiye ediliyor ayrica buffering lerin optimistic row yada pessimistic olmasida etken olabilir

3

Re: Cursor cannot be modified because it contains an unsaved record.

verdiğin adrese baktım ama pek bir şey yazmıyor ya da yazılanı ben anlamadım.
"You can repoduce this error with a simple form using buffering, a textbox, and a grid. Type into the textbox, then hit the button, which adds a record to the parent and child tables. Go into the grid and add child records, using a valid in the grid textbox to append blank records. You should get the error fairly quickly."

bu cümleden anladığım şeyi yaptım ama hatayı alamadım.

/o---------------------o\
     www.haser.com
\o---------------------o/

4

Re: Cursor cannot be modified because it contains an unsaved record.

evet bu bug undocumented olarak geciyor bir de UT de sormak lazim

5

Re: Cursor cannot be modified because it contains an unsaved record.

forma bir grid ekledim. grid bağlı olduğu tablo buffer modda. Grid'in afterrowcolchange'ine append blank yazıyorum. gridde sütunlar arası dolaşırken bahsettiğim hatayı veriyor.
Ama tablo buffer modda değilse sorun yok
Bu bir bug'mıdır?

/o---------------------o\
     www.haser.com
\o---------------------o/

6

Re: Cursor cannot be modified because it contains an unsaved record.

BRCC de tableupdate() kodunu koy bakalim ek olarak ne yapacak

7

Re: Cursor cannot be modified because it contains an unsaved record.

Tarkan,
Append Blank zaten tehlikeli, AfterRowColChange'te daha da tehlikeli gibi geliyor.

Her neyse sanirim

this.refresh

yazmayi unuttun AfterRowColChange'de.

8

Re: Cursor cannot be modified because it contains an unsaved record.

çetin hocam;
append blank ın tehlikesi nedir?

9

Re: Cursor cannot be modified because it contains an unsaved record.

sorunun muhatabi ben degilim Erdal ama genede bildigim kadari ile cevaplamis olayim,
appen blank  insert into ya gore daha az ozelliki kayit ekleme sekli

Visual Fox Pro
APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]

dan baska kullanim sekli yok

insert into ise daha efektif ve field validation larin soz konusu oldugu yerlerde bu on plana cikiyor

not null olmasi gereken yerlerdede append blank komutu Field <fieldname> violation rule is violated. tarzi hatalar alabiliriz.

Cetin hocam daha detayli bilgi verecektir ama bende bildiklerimi aktarayim dedim.

10

Re: Cursor cannot be modified because it contains an unsaved record.

Büyüksün Çetin smile
Çok daha karmaşık olacağını düşündüğüm için bu kadar basit bir şey aklımın ucuna bile gelmedi.

Aslında Append Blank kullanmıyoruz. Burada örnek verebilmek için yazmıştım. Kodumuz biraz daha karışık. Aslında olayın özü record pointer'in yerinin değişmesi.

Tekrar teşekkür ederim.

/o---------------------o\
     www.haser.com
\o---------------------o/

11

Re: Cursor cannot be modified because it contains an unsaved record.

Append blank ve insert her ikisi de kaydi kilitlemez.
Append blank dedikten sonra senin onu degistirebileceginin garantisi yok. Insert into ile hic degilse bir kerede:

append blank
replace ...

yapmis oluyorsun, o nedenle kilit derdin olmuyor en basitinden.