PDA

View Full Version : مشکل درساخت جدول در حین اجرای برنامه



mehdi_RM
سه شنبه 07 فروردین 1386, 23:59 عصر
سلام
من داخل دیتابیسم می خوام جدول جدیدی بسازم
با دستور create table اینکارو می کنم ولی وقتی adodc1.refresh رو اجرا می کنه پیغام می ده
که پیغامش مربوط به adodc هستش ولی بعد از پیغام جدول رو می سازه
ولی اگه adodc1.refresh رو نزارم جدولو نمی سازه
مشکاش از چیه؟

Hossein Bazyan
چهارشنبه 08 فروردین 1386, 09:03 صبح
دوست عزیز فکر کردی که اگر در چند جا تاپیک بزنی زودتر به جواب میرسی ؟
سه تاپیک با یک عنوان ثابت در یک تالار با یک سوال ثابت باز کرده ای در آدرسهای زیر :
http://barnamenevis.org/forum/showthread.php?t=64261
http://barnamenevis.org/forum/showthread.php?t=64264
http://barnamenevis.org/forum/showthread.php?t=64258

عضو جدید هم نیستی که قوانین را ندانی . پس خواهشا رعایت کنید .

CodeMasterX
پنج شنبه 09 فروردین 1386, 08:44 صبح
شما با کتابخانه ADOX تو وی بی 6 می تونی تو دیتابیس هایی که اونو ساپورت می کنن جدول بسازی،براشون کلید ها رو تعریف کنی،روابط بین جداول رو تعیین کنی و .... .
برای اینکار اول به منوی Project|References برو و دو کتابخانه زیر رو به پروژه اضافه کن:



Microsoft ActiveX Data Object 2.7 Library
Microsoft ADOX Ext. 2.8 for DDL and Security



حالا توی متد Form_Load() این کد رو بنویس:



Dim CN As New ADODB.Connection
Dim ObjTable As New ADOX.Table
Dim ObjX As New ADOX.Catalog

CN.Open ConnectionString
ObjX.ActiveConnection = CN

ObjTable.Name = "tbl_Users"
ObjTable.Columns.Append "Username" , adWChar , 20
ObjTable.Columns.Append "Password" , adWChar , 12
ObjTable.Columns.Append "IsAdmin" , adBoolean

ObjX.Tables.Append ObjTable

MsgBox "Command Completed Successfully." , vbInformation

CN.Close
Set CN = Nothing



حالا یه سری به دیتابیست بزن.لطفا هم قوانین سایت رو رعایت کنید من بعد :خجالت:.

mehdi_RM
پنج شنبه 09 فروردین 1386, 19:34 عصر
آقا شرمنده من فکر کردم 2 بار اولی تاپیک رو نساخته:خجالت:


اگه جدولش تکراری بود پیغام خطا نمی ده ؟؟؟؟؟؟؟؟

CodeMasterX
جمعه 10 فروردین 1386, 01:28 صبح
کمی خلاقیت داشته باش دوست عزیز:



Dim CN As New ADODB.Connection
Dim Cat As New ADOX.Catalog

CN.Open ConnectionString
Cat.ActiveConnection = CN

Dim iCount As Integer
For iCount = 1 To Cat.Tables.Count -1
If Cat.Tables(iCount).Name = "tbl_Users" Then
MsgBox "Table tbl_Users Exist!" , vbCritical
Exit Sub
End If
Next

Cat.Close
CN.Close



حله ؟ اگر این شرط درست بود یعنی جدولی با نام tbl_Users وجود داره اگر هم که نه بر اساس کد قبلی ای که گذاشتم می تونی حدول جدید رو بسازی.

mehdi_RM
یک شنبه 12 فروردین 1386, 01:59 صبح
Dim value As Boolean
Dim name_table, sql As String

name_table = Text2.Text

Dim Con As ADODB.Connection
Dim rstSchema As ADODB.Recordset
Dim strCon As String
Dim strStruct As String

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=files\paygahnew.mdb;Persist Security Info=False"
Con.Open strCon
Set rstSchema = Con.OpenSchema(adSchemaTables)

value = True
Do Until rstSchema.EOF
If name_table = rstSchema!TABLE_NAME Then
value = False
Print "neme jadval tekrari ast "
End If
rstSchema.MoveNext
Loop

If value = True Then ' age jadval tekrari nabashe
sql = "create table " & name_table & " ([ßÏ ÑæäÏå] text(10),[äæÚ ÓæÇÈÞ] text(30),ÑæÒ text(2),ãÇå text(2),ÓÇá text(4),ÓÇÚÊ text(5),[ÊæÖíÍÇÊ äæÚ ÓæÇÈÞ] text(50)) "
Adodc1.RecordSource = sql
Adodc1.Refresh ' error mide inja
Print "creat new table "
End If


rstSchema.Close
Con.Close
Set rstSchema = Nothing
Set Cnxn = Nothing

سلام
اون قسمتی که ضخیم کردم پیغام میده
من فقط می خوام با ado کار کنم و با adox نمی خوام کار کنم
پیغامش این :
operation is not allowed when the object is closed

mehdi_RM
یک شنبه 12 فروردین 1386, 21:31 عصر
کسی نیست جواب بده؟؟؟؟؟؟؟

h_sadeghynejad
یک شنبه 12 فروردین 1386, 22:17 عصر
دوست عزیز من از این روش استفاده میکنم و جدولو میسازه

Dim Conn As New ADODB.Connection
Dim Rec As New ADODB.Recordset
Conn.ConnectionString = Mdu_connect.Connect()
Conn.CursorLocation = adUseClient
Conn.Open
Rec.Open "create table tablename (field1 integer,field2 text(10))", Conn, adOpenDynamic, adLockOptimistic

Refresh هم نمیخواد پیغام خطا هم نمیده بعد از ساخت هم مستقیما میتونی بهش دسترسی داشته باشی با این دستور

Rec.Open "select * from tablename", Conn, adOpenDynamic, adLockOptimistic

یا علی

CodeMasterX
دوشنبه 13 فروردین 1386, 01:19 صبح
اولا اون کدی که من نوشتم کار می کنه و درست هست.
دوما خطاب به دوستمون Medi_RM باید بگم کد شما مشکلی نداره ولی نوشتین که فقط می خواین با ado کار کنین،اما کد شما با دستورات SQL جدول می سازه نه با ADO!
ADOX برای همین کار طراحی شده،حالا اگه میخواین با SQL بنویسین که هیچ ولی با ADOX کنترل بیشتری روی این کار دارین.

mehdi_RM
سه شنبه 14 فروردین 1386, 10:41 صبح
ممنون از شما دو دوست عزیز مشکلم حل شد با Ado و sql نوشتم
کد اینجا می زارم در اولین فرصت