ورود

View Full Version : سوال: ويرايش ركوردها



minoo_f19
سه شنبه 29 شهریور 1390, 14:48 عصر
سلام دوستان
من براي ذخيره ركوردهام ازين دستور استفاده كردم

ADOTable1.insert
ADOTable1.FieldValues['DATE']:= MaskEdit1.Text
ADOTable1.FieldValues['SITECODE']:= Edit30.Text
if RadioButton1.Checked then
ADOTable1.FieldValues['status']:= 'OK'
if RadioButton2.Checked then
ADOTable1.FieldValues['status']:= 'NOT OK'
ADOTable1.Post

از همين دستورهم براي ويرايش استفاده كردم فقط بجاي insert از editاستفاده كردم،ولي بجاي اينكه ويرايش بشه باز يك ركورد جديد ذخيره ميشه.كسي ميدونه اشكال كاراز كجاست؟

pop123
سه شنبه 29 شهریور 1390, 15:06 عصر
باید قبل ازpost به حالت edit ببرید adotable1.edit

vcldeveloper
سه شنبه 29 شهریور 1390, 23:52 عصر
از همين دستورهم براي ويرايش استفاده كردم فقط بجاي insert از editاستفاده كردم،ولي بجاي اينكه ويرايش بشه باز يك ركورد جديد ذخيره ميشه.كسي ميدونه اشكال كاراز كجاست؟
کدی که اینجا قرار دادید، مشکلی نداره، و قاعدتا باید درست عمل کنه، اما اگر درست عمل نمیکنه، باید مشکل تون از جای دیگه ایی باشه. از چه بانک اطلاعاتی استفاده می کنید؟ پیشنهاد می کنم که یک برنامه ساده با یک بانک اطلاعاتی ساده ایجاد کنید که فقط همین مشکل شما رو نشون بده، و سورس کد اون رو اینجا برای بررسی قرار بدید. الان با اون چند خط کد، کسی نمیتونه کمک خاصی به شما بکنه.

minoo_f19
چهارشنبه 30 شهریور 1390, 09:21 صبح
ممنون از توجهتون
من از sql2000استفاده ميكنم.اين عكس فرمم هست كه اطلاعاتش ذخيره ميشن در جدول زير

75569
75571اين هم كد INSERTهست

ADOTable1.Insert
ADOTable1FORM_NAME.Value:= Label13.Caption
ADOTable1date.Value:= MaskEdit1.Text
ADOTable1SiteCode.Value:= Edit2.Text
ADOTable1Item.Value:= Label5.Caption
ADOTable1comment.Value:= Edit4.Text
IF RadioButton1.Checked THEN
ADOTable1status.Value:= 'OK
IF RadioButton2.Checked THEN
ADOTable1status.Value:= 'NOT OK
ADOTable1.Post

حالا ميخوام يك دكمه براي ويرايش اضافه كنم .از همين كد استفاده كردم فقط در حالت EDITولي ركوردها درست ويرايش نميشن:ناراحت:

vcldeveloper
چهارشنبه 30 شهریور 1390, 11:53 صبح
از همين كد استفاده كردم فقط در حالت EDITولي ركوردها درست ويرايش نميشن
درست ویرایش نمیشن، یعنی چی؟ همون موردی که در پست اول ذکر کردید؟ یا اینکه اتفاق دیگه ایی میافته؟
ساختار اون جدول در SQL Server به چه صورتی تعریف شده؟
در محیط دلفی روی اون AdoTable1 کلیک کنید، و Ctrl+C را بزنید، یا اینکه از منوی راست-کلیک اش گزینه Copy را انتخاب کنید، و سپس NotePad را باز کنید، و در آنجا Paste کنید. متن Paste شده در NotePad را اینجا قرار بدید. اگر این AdoTable1 به یک شی AdoConnection متصل هست هم، این کار رو برای اون شی AdoConnection تکرار کنید، و متن Paste شده مربوط به اون رو هم اینجا قرار بدید.

SYNDROME
چهارشنبه 30 شهریور 1390, 14:01 عصر
با سلام
احتمال دارد در هنگامی که رکورد مورد نظر را ویرایش می کنی اصلاٌ رکوردی در کار نیست.
یعنی بدونه اینکه رکوردی در ADO باشد شما فرمان Edit را اجرا می کنید و سپس در هنگام Post کردن رکورد جدید ایجاد می شود.
قبل ار اجرای فرمان Edit تعداد RecordCount رو به دست بیاورید.
موفق باشید

minoo_f19
پنج شنبه 31 شهریور 1390, 09:22 صبح
سلام
بهتره منظورمو اينطوري بگم
فرض كنيد من دوتا ركورد در جدولم insertكردم،حالا وقتي ميخوام ركورد اول رو ويرايش كنم اشتباها ركورد دوم ويرايش ميشه و به شكل ركورد اول درمياد!
اينم ساختار جدولمه

object ADOTable_OKNOK: TADOTable
Active = True
Connection = ADOConnection1
CursorType = ctStatic
TableName = 'OK_NOTOK'
Left = 24
Top = 288
object ADOTable_OKNOKSiteCode: TWideStringField
FieldName = 'SiteCode'
Size = 50
end
object ADOTable_OKNOKdate: TWideStringField
FieldName = 'date'
Size = 50
end
object ADOTable_OKNOKItem: TWideStringField
FieldName = 'Item'
Size = 50
end
object ADOTable_OKNOKcomment: TWideStringField
FieldName = 'comment'
Size = 50
end
object ADOTable_OKNOKstatus: TWideStringField
FieldName = 'status'
Size = 50
end
object ADOTable_OKNOKForm_name: TWideStringField
FieldName = 'Form_name'
Size = 50
end
end

اينم ساختار ado connection

object ADOConnection1: TADOConnection
Connected = True
ConnectionString =
'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In' +
'fo=False;Initial Catalog=PM'
LoginPrompt = False
Provider = 'SQLOLEDB.1'
Left = 40
Top = 8
end

Felony
پنج شنبه 31 شهریور 1390, 09:38 صبح
قبل از ویرایش باید روی رکورد مورد نظر برید ( توسط متد RecNO یا Select زدن رو جدول )

SYNDROME
دوشنبه 04 مهر 1390, 08:29 صبح
[RIGHT]
سلام
اشتباها ركورد دوم ويرايش ميشه و به شكل ركورد اول درمياد!

با سلام
دوست عزیز زمانی که 2 رکورد دقیقاً مثل هم شوند از طریق پایگاه داده ها یک خطا بر می گردد که امکان اضافه کردن آن وجود ندارد. چو شما نمی توانید 2 رکورد کاملاً مشابه در یک جدول داشته باشد.
می توانید قبل از ویرایش رکورد با دستور Locate به رکورد مورد نظر بروید.(با استفاده از فیلد کلید)
موفق باشید

Felony
دوشنبه 04 مهر 1390, 10:16 صبح
برای جدولتون فیلد کلید اصلی در نظر بگیرید.

minoo_f19
یک شنبه 15 آبان 1390, 15:44 عصر
ممنون از راهنماییتون آقای تاجیک.برای جدولم یک فیلد int با Identityمساوی یک گذاشتم.مشکل ویرایش رکوردهام حل شد به همین سادگی!

Felony
یک شنبه 15 آبان 1390, 16:06 عصر
خواهش میکنم ؛ یادتون باشه همیشه اولین فیلدی که موقع طراحی یک جدول باید در نظر بگیرید ID هست که باید یکتا باشه ، هم از مشکلات این چنینی جلوگیری میکنه و هم حتما یه روز به کارتون میاد ... !