PDA

View Full Version : چک کردن وجود یه جدول در دیتابیس



niko2008
پنج شنبه 17 تیر 1395, 15:26 عصر
سلام خدمت اساتید محترم
میخوام بدونم یه روش خاصی برای این که بفهمیم یه Table در دیتابیس هست یا نه ، وجود داره میشه کمک کنید

محسن واژدی
جمعه 18 تیر 1395, 05:49 صبح
سلام
تابع زیر را در ماژول قرار بدید:
Public Function CheckExistTable(ByVal oADO As Adodc, ByVal vCurTblName As String) As Boolean

On Error Resume Next

Dim oADOXConn As Object
Dim oADODBConn As Object
Dim vCurTbl As Variant
Err.Clear

Set oADOXConn = CreateObject("ADOX.Catalog")
Set oADODBConn = CreateObject("ADODB.Connection")
oADODBConn.Open oADO.ConnectionString
oADOXConn.ActiveConnection = oADODBConn
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical: Exit Function
For Each vCurTbl In oADOXConn.Tables
If LCase(Trim(vCurTbl.Name)) = LCase(Trim(vCurTblName)) Then
CheckExistTable = True
Exit For
End If
Next
oADODBConn.Close
End Function


برای مثال:
Private Sub Command1_Click()
MsgBox "Exists result: " & CheckExistTable(Adodc1, "Authors")
End Sub

موفق باشید

niko2008
جمعه 18 تیر 1395, 11:01 صبح
سلام محسن جان خیلی عالی بود
حالا میشه در کد زیر تست کنیم ببینیم اگه مثلا table x موجوده فیلدهاشو پر کنیم و اگه table x نباشه اول اونو ایجاد کنه بعد پرش کنه



'Creating a table
If Check1.Value = 1 Then
On Error Resume Next
Set db = OpenDatabase(App.Path & "\NIKODB.MDB")
Set tds = db.TableDefs

'ado.Execute "CREATE TABLE " & iTable & "([DateTime] TEXT(25), [NE NAME] TEXT(25))"

ado.Execute "CREATE TABLE " & iTable & "([DateTime] TEXT(25), [NE_NAME] TEXT(25))"
On Error GoTo 0
For i = 1 To paramCounter
ado.Execute "ALTER TABLE " &iTable & " ADD COLUMN [" & iParam(i) & "] TEXT(255);"
Next i
'************************************************* *********************************************
' Display names of all tables in database:
For j = 0 To tds.Count - 1
lstTables.AddItem tds(j).Name
Next

'************************************************* *********************************************
'RichTextBox1.SelText = iTable & vbTab & " (" & paramStr & ") VALUES (" & valueStr & ")" & vbCrLf
'ado.Execute "INSERT INTO " & Q & " (" & paramStr & ") VALUES (" & valueStr & ");"
End If

محسن واژدی
جمعه 18 تیر 1395, 15:01 عصر
سلام محسن جان خیلی عالی بود
حالا میشه در کد زیر تست کنیم ببینیم اگه مثلا table x موجوده فیلدهاشو پر کنیم و اگه table x نباشه اول اونو ایجاد کنه بعد پرش کنه



'Creating a table
If Check1.Value = 1 Then
On Error Resume Next
Set db = OpenDatabase(App.Path & "\NIKODB.MDB")
Set tds = db.TableDefs

'ado.Execute "CREATE TABLE " & iTable & "([DateTime] TEXT(25), [NE NAME] TEXT(25))"

ado.Execute "CREATE TABLE " & iTable & "([DateTime] TEXT(25), [NE_NAME] TEXT(25))"
On Error GoTo 0
For i = 1 To paramCounter
ado.Execute "ALTER TABLE " &iTable & " ADD COLUMN [" & iParam(i) & "] TEXT(255);"
Next i
'************************************************* *********************************************
' Display names of all tables in database:
For j = 0 To tds.Count - 1
lstTables.AddItem tds(j).Name
Next

'************************************************* *********************************************
'RichTextBox1.SelText = iTable & vbTab & " (" & paramStr & ") VALUES (" & valueStr & ")" & vbCrLf
'ado.Execute "INSERT INTO " & Q & " (" & paramStr & ") VALUES (" & valueStr & ");"
End If




سلام
برای این سوال جدید تاپیک جداگانه باز کنید

niko2008
جمعه 18 تیر 1395, 15:26 عصر
حالا تو این تاپیک نمیشه جواب بدین