ورود

View Full Version : مشکل با Adodc



aleas2
یک شنبه 01 خرداد 1390, 23:47 عصر
سلام خسته نباشید چطوری میشه فیلد های جدول که توسط Adodc به بانک وصل میشم رو فیلد دلخوا بانک رو داخل listbox نمایش بدم؟من دوتا گزینه لیست datafield و datasourse رو از جدول انتخاب کردم ولی نمایش داده نمیشه چکار کنم؟
و ضمنا اگر بخوام تو جدول مثلا به رکورد دوم رکورد جدیدی اضافه کنم چجوری مثل لیست باکس که اینجوری
List1.AddItem text1, 2
تو جدول چطوری میشه اینکارو کرد؟با کنترل DataGrid1 چجوری میشه یه رکورد مثلا به رکورد دوم یه سطر اضافه کنم با لیست باکس چجوری با تکست چجوری؟
و چجوری میشه سطر های بانک تو جدول با vb6 جابجا کرد؟

برای این موارد اگر سورس دارین ممنون میشم سورس بزارین اگر ندارین توضیح بدین ممنون

knight-rak
دوشنبه 02 خرداد 1390, 00:33 صبح
کلا الآن زیاد حال توضیح دادن ندارم و سورس هم بخاطر نداشتن VB در حال حاضر بیخیال
کلا شما میتونی از datalistbox استفاده کنی که به یه فیلد مستقیم وصل میشه و مثل دیتا گرید هست فقط باید خاصیت روسورس اونو مقدار دهی کنید و آیتم فیلد
اما برای اضافه کردن هم شما از دستور additem استفاده میکنید برای بانک نه چیز دیگه چون توی دیتا گرید هستید ارتباط مستقیم هست و همیشه با یه رفرش میشه اطلاعات چدید رو هم دید
ado1.recordset.additem
ado1.recordset.fields("Name:)="knight-rak"
ado1.update
ado1.refresh

یه چیزی تو این مایه ها


موفق باشید ....

aleas2
دوشنبه 02 خرداد 1390, 00:52 صبح
دوست عزیز کلا یه بار سوال منو درست بخونین من نمیخوام به رکورد خاصی دسترسی پیدا کنم
من میخوام مثلا فیلد name از بانک تو لیست باکس نمایش بدم
و بتونم فیلد جدید به سطر دلخوا اضافه کنم چون پیشفرض به اخر جدول فیلد اضافه میشه

vbhamed
دوشنبه 02 خرداد 1390, 10:51 صبح
سلام

اگر سؤالهاتون رو دونه دونه بپرسيد و كمي واضح تر خيلي بهتره

1 - اگر مي خواين تمام مقادير ثبت شده در يك فيلد از يك جدول در ListBox، ليست بشه بايد از كامپوننت Microsoft Data Bound List Control استفاده كنيد
در خاصيت RowSource نام ديتا كنترل و در خاصيت ListField نام فيلد قرار مي گيره و مقاديرش ليست ميشه، ضمنا همچنان خاصيت DataSource و DataField رو هم دارن كه اين خاصيت ها، مثل يك تكست باكس معمولي عمل مي كنند

2 - در مورد اضافه كردن به جدول اونم سطر دوم مي‌دونيد كه هر ركوردي اضافه كنيد به صورت اتوماتيك آخر جدول اضافه ميشه، براي اين كار شما بايد اطلاعاتتون رو بر اساس يك فيلد خاص مرتب كنيد مثلا فيلدي به نام Row، حالا براي اينكه بعد از ركورد دوم، ركوردي اضافه بشه، يك ركورد به صورت معمولي آخر جدول اضافه مي‌كنيد ولي مقدار فيلد Row اون رو طوري مي‌دين كه بعد از سطر 2 قرار بگيره
براي اين كار يا بايد از ركورد 2 به بعد رو دوباره شماره بزنيد يا يه مقداري به Row سطر قبلي اضافه كنيد و در سطر جديد قرار بديد

حالت اول
Row Name
------------------
1 Ali
2 Reza
3 Hasan
4 Mahdi

Row Name
------------------
1 Ali
2 Reza
3 Mohammad
5 Hasan
6 Mahdi

در اين حالت Mohammad بعد از ركورد 2 اضافه شده و فيلد Row از سطر Mohammad تا آخر دوباره شماره گذاري شدن

حالت دوم
Row Name
------------------
1 Ali
2 Reza
3 Hasan
4 Mahdi

Row Name
------------------
1 Ali
2 Reza
2.5 Mohammad
3 Hasan
4 Mahdi
در اين حالت يك مقداري (0.5) به Row سطر قبلي (2) اضافه شده كه حاصل شده (2.5) و به عنوان Row سطر جديد قرار گرفته
البته در اصل بايد مقدار اضافه شده طوري انتخاب بشه كه عدد حاصل از سطر قبلي بيشتر و از سطر بعدي كمتر باشه، ضمنا در اين حالت فيلد Row حتما از نوع اعشاري باشه و ترجيحا اعشار بلند يعني Double
براي انتخاب اين عدد هم مي تونيد از اين فرمول استفاده كنيد
NewRow = (PrevRow + NextRow) / 2

حالت سوم
يك راه ديگه هم هست اون اين كه همه ركوردها رو پاك كنيد و دوباره به ترتيب دلخواه بنويسيد اما از جهت سرعت و افزايش حجم بانك به خاطر ايجاد فضاهاي بلااستفاده توصيه نميشه مگر اينكه بعدش بانك رو Compact كنيد، هرچند بازم سرعتش كمتره مخصوصا در ركوردهاي زياد و برنامه تحت شبكه

به نظر من اگر تعداد ركوردها كم هست از حالت اول ولي اگر زياده از حالت دوم استفاده كنيد، حالت سوم هم در موارد خاص

aleas2
دوشنبه 02 خرداد 1390, 12:33 عصر
ممنون که جوابمون دادین لیست باکس همین روشی گفتی انجام دادم ولی نمایش داده نشد لیست خالی نمایش میده
خاصيت DataSource و DataField هم تنظیم کردم نمیدونی مشکل چی؟
ضمنا" چجوری میشه تمام جدول های بانک تمام فیلد هارو پاک کرد؟

vbhamed
دوشنبه 09 خرداد 1390, 08:47 صبح
سلام

خب حتما جايي تو پياده سازي اشتباه انجام دادين
منظورتون از تمام جدولهاي بانك تمام فيلدها، همون تمام ركوردهاي همه جدولهاست ؟

aleas2
دوشنبه 09 خرداد 1390, 18:06 عصر
منظورم اینه تمام رکورد های فیلدهارو میخوام پاک کنم انگار که هنوز رکوردی اضافه نشده دستوری نیست که این کارو انجام بده؟

vbhamed
دوشنبه 09 خرداد 1390, 22:38 عصر
سلام
يك كنترل ديتا (نه ADO) روي فرم بزاريد و بعد پاكش كنيد بعد كد زير رو بنويسيد (گذاشتن و پاك كردنش براي اينه كه رفرنسش به پروژه اضافه بشه)

Dim db As Database, dt As Object

Set db = OpenDatabase("c:\Test.mdb")

For Each dt In db.TableDefs
If Left$(LCase$(dt.Name), 4) <> "msys" Then
db.Execute "Delete * From " & dt.Name
End If
Next
db.Close