PDA

View Full Version : مشکل عدم اجازه نوشتن داده در بانک (vb6,sq)



amin_ir
چهارشنبه 12 اردیبهشت 1386, 14:24 عصر
با توجه به کد زیر:




With cnn


ConnectionString = Adodc1.ConnectionString .
CursorLocation = adUseClient .
mode = adModeReadWrite .
Open .
End With
Set rst = cnn.Execute ("Select * from xxxx
rst.MoveFirst
While Not rst.EOF
fn = rst.Fields("date") & rst.Fields("code1
en = Trim(fn
rst.Fields("idcode").Value = en
rst.Update


sql = "insert into stdnew(idcode) values ('" + en
Set rst = cnn.Execute(sql


rst.MoveNext
Wend
Set cnn = Nothing
Set rst = Nothing




من میخوام درون فیلد idcode از بانکم ، رشته ای که از محاسبه چندفیلد دیگر همان رکورد بدست می اید را قرار دهم مشکل اینجاست که وقتی از دستوری که با رنگ سبز مشخص کردم استفاده میکنم errore عدم اجازه نوشتن در بانک را میده ( runtime eroore 3251- cuurent recordset does not support updating,this may be limitation of provider or of the selected locktype )
و وقتی از دستور قرمز رنگ استفاده میکنم movenext را انجام نمیده چون میگه بانک شما close شده
لازم به ذکر است که حتی با تغییر cursorlocation به aduseserver و mode به admodeshareexclusive باز مشکل عدم اجازه دسترسی به بانک را می دهد
لطفا در درجه اول جاهایی که کار من می لنگد را بگویید و در درجه دوم بهترین روش برای قرار دادن یک رشته درون یک فیلد توسط loop

amin_ir
پنج شنبه 13 اردیبهشت 1386, 11:42 صبح
یعنی واقعا کسی نیست که جواب سوال منو بدونه !!!!!!!؟

amin_ir
جمعه 14 اردیبهشت 1386, 12:33 عصر
به علت اینکه من نتونستم کدنویسی را جوری مرتب کنم که در این فروم بشه درست و از چپ به راست مشاهده کرد لذا در انتهای بعضی از خطوط برنامه بعضی از علائم از جمله پرانتزها از قلم افتاده.
هر قسمت برنامه که متوجه نشده اید را بگویید تا توضیح دهم.
آیا راهی هست که بشود بدون اتصال به سرور دخل و تصرف در رکوردها نمود ؟(من بعید می دونم)
چه دستور sql را می توانیم مستقیما استفاده نماییم که حاجت بالا برآورده شود . همانطور که مشاهده می فرمایید دستوراتی که با رنگ قرمز مشخص شده ، دستور SQL می باشد ولی تنها مشکل اینجاست که فقط در یک رکورد اعمال می شود و نمی شود Movenext کرد . آیا دستوری را می شود بعد از آن قرار داد که بعد از اجرای اولین رکورد در loop به رکورد بعدی انتقال یابد و محاسبات را برای مابقی رکوردها انجام داد.

AminSobati
جمعه 14 اردیبهشت 1386, 15:57 عصر
دوست عزیزم کاری که شما دارین انجام میدین، به زبان شیرین TSQL چنین چیزی میشه!...


UPDATE xxxx SET
idcode=LTRIM(RTRIM(CAST(Date AS VARCHAR(15))+CAST(Code1 AS VARCHAR(15))))

INSERT stdnew(idcode) SELECT idcode FROM xxxx

من جای شما باشم اطلاعات رو نمیارم سمت کلاینت برای چند تا ویرایش Set Based و ساده

amin_ir
یک شنبه 16 اردیبهشت 1386, 22:45 عصر
با تشکر.
فرض کنید در Table تعداد زیادی رکورد موجود است و شما قصد دارید ستونی بنام Idcode به آن اضافه کنید که از تلفیق چند فیلد نا همجنس همان رکورد پر شود چگونه دستور Sql فوق را درون Loop می گذارید تا در تمامی فیلد های ستون جدید این کار صورت پذیرد؟

AminSobati
دوشنبه 17 اردیبهشت 1386, 00:18 صبح
Loop نیازی نیست. دستور Update خودش رو تمام رکوردهای شما حرکت میکنه