ADOX ile Programlama Kod Örnekleri
#1
ADOX ile Programlama kod örnekleri
Bu yazımızda veritabanı programcılarına başvuru niteliğinde olabilecek ve ADOX kütüphanesini kullanarak program içinden Access nesnelerinin (tablo, alan, indexleme ve ilişkilendirme, sorgu ve veritabanı) nasıl oluşturulabileceği, silineceği, değiştirilebileceği ve listelenebileceği veya özelliklerinin nasıl değiştirilebileceği ele alınacaktır.
ADOX ADO kütüphanesinin bir uzantısıdır. Veritabanı nesnelerinin bir listesini vermektedir. Bu kütüphaneyi kullanabilmek için aşağıdaki referansı eklemek gerekir.

Microsoft ADO Ext x.x for DDL and Security

Genel olarak DAO kütüphanesi bu gibi işlemler için daha uygundur ve sadece Access için üretilmiştir. Fakat bazı işlemler DAO ile yapılamaktadır. Örneğin bir tanesi kod ile otomatik sayı başlangıcının yapılamamasıdır. ADOX DAO ya göre daha az stabildir ve versiyonlar arasında sorunlar yaratabilmektedir.
Aşağıda ADOX ile kullanılabilecek bazı özel fonksiyonlar yer almaktadır. Kodları bir modüle kopyalayıp kullanabilirsiniz.

Fonksiyonlar Açıklama
SetSeed() Otomatik sayının başlangıç sayısını ayarlar.
ShowAllTables() Tabloları listeler (Alan listelemesi de yapılabilir)
ShowPropsADOX() Tablonun sütunlarını gösterir ve istenirse özelliklerini değiştirebilir.
CreateTableAdox() Çeşitli alan tipli tablo oluşturur.
ModifyTableAdox() Tabloya alan ekler veya siler.
ModifyFieldPropAdox() Alan özelliklerinin nasıl değiştirilebileceğini gösterir
DeleteTableAdox() Tablo siler
CreateIndexesAdox() Nasıl index oluşturulacağını gösterir
DeleteIndexAdox() İndexlerin nasıl silinebileceğini gösterir
CreateKeyAdox() İlişkilendirmenin nasıl yapılacağını gösterir
ShowKeyAdox() İlişkilerin listesini gösterir
DeleteKeyAdox() İlişkileri siler
CreateViewAdox() Sorgu oluşturur
CreateProcedureAdox() Parametre sorgusu veya aksiyon sorgusu oluşturur.
ShowProx() Sorguları listeler
ExecuteProcedureAdox() Execute a parameter query
DeleteProcedureAdox() Sorguları siler
CreateDatabaseAdox() Veritabanı oluşturur
DeleteAllAndResetAutoNum() Bir tablonun tüm verilerini siler ve otomatik sayıyı sıfırlar.
GetSeedADOX() Otomatik sayının başlangıç sayısını gösterir
ResetSeed() Otomatik sayıyı sıfırlar

Visual Basic
  1. Option Compare Database
  2. Option Explicit
  3.  
  4. Function SetSeed(strTable As String, strAutoNum As String, lngID As Long) As Boolean
  5. 'Amaç: ADOX kullanarak otomatik sayıyı sıfırlamak.
  6. Dim cat As New ADOX.Catalog
  7.  
  8. Set cat.ActiveConnection = CurrentProject.Connection
  9. cat.Tables(strTable).Columns(strAutoNum).Properties("Seed") = lngID
  10. Set cat = Nothing
  11. SetSeed = True
  12. End Function
  13.  
  14. Function ShowAllTables(Optional bShowFieldsToo As Boolean)
  15. 'Amaç: ADOX ile tabloları listeler.
  16. Dim cat As New ADOX.Catalog 'ADOX un kök nesnesi.
  17. Dim tbl As ADOX.Table 'Tablolar içinde her tablo.
  18. Dim col As ADOX.Column 'Tablo içindeki her sütun.
  19.  
  20. 'Hâlihazırdaki veritabanının listesini işaretliyoruz.
  21. Set cat.ActiveConnection = CurrentProject.Connection
  22.  
  23. 'Tüm tablolar üstünde döngü.
  24. For Each tbl In cat.Tables
  25. Debug.Print tbl.Name, tbl.Type
  26. If bShowFieldsToo Then
  27. 'Tüm sütunlar üstünde döngü.
  28. For Each col In tbl.Columns
  29. Debug.Print , col.Name, col.Type
  30. Next
  31. Debug.Print "--------------------------------"
  32. 'Stop
  33. End If
  34. Next
  35.  
  36. 'Hafızadaki bilgileri temizleme
  37. Set col = Nothing
  38. Set tbl = Nothing
  39. Set cat = Nothing
  40. End Function
  41.  
  42. Function ShowPropsADOX(strTable As String, Optional bShowPropertiesToo As Boolean)
  43. 'Amaç: ADOX ile tüm sütunları ve istenirse özelliklerini gösterme.
  44. Dim cat As New ADOX.Catalog 'ADOX un kök nesnesi.
  45. Dim tbl As ADOX.Table 'Tablolar içinde her tablo.
  46. Dim col As ADOX.Column 'Tablodaki her sütun.
  47. Dim prp As ADOX.Property
  48.  
  49. 'Hâlihazırdaki veritabanının listesini işaretliyoruz.
  50. Set cat.ActiveConnection = CurrentProject.Connection
  51. Set tbl = cat.Tables(strTable)
  52.  
  53. For Each col In tbl.Columns
  54. Debug.Print col.Name ', col.Properties("Fixed length"), col.Type
  55. If bShowPropertiesToo Then
  56. For Each prp In col.Properties
  57. Debug.Print , prp.Name, prp.Type, prp.Value
  58. Next
  59. Debug.Print "--------------------------------"
  60. 'Stop
  61. End If
  62. Next
  63.  
  64. 'Hafızadaki bilgileri temizleme
  65. Set prp = Nothing
  66. Set col = Nothing
  67. Set tbl = Nothing
  68. Set cat = Nothing
  69. End Function
  70.  
  71. Function CreateTableAdox()
  72. 'Amaç: ADOX kullanarak veritabanı oluşturmak.
  73. Dim cat As New ADOX.Catalog
  74. Dim tbl As ADOX.Table
  75.  
  76. Set cat.ActiveConnection = CurrentProject.Connection
  77. 'Tablo oluşturucuya ulaşma.
  78. Set tbl = New ADOX.Table
  79. tbl.Name = "tblAdoxContractor"
  80.  
  81. 'Sütunları oluşturma
  82. With tbl.Columns
  83. .Append "ContractorID", adInteger 'Number (Long Integer)
  84. .Append "Surname", adVarWChar, 30 'Text (30 max)
  85. .Append "FirstName", adVarWChar, 20 'Text (20 max)
  86. .Append "Inactive", adBoolean 'Yes/No
  87. .Append "HourlyFee", adCurrency 'Currency
  88. .Append "PenaltyRate", adDouble 'Number (Double)
  89. .Append "BirthDate", adDate 'Date/Time
  90. .Append "Notes", adLongVarWChar 'Memo
  91. .Append "Web", adLongVarWChar 'Memo (for hyperlink)
  92.  
  93. 'Sütun özelliklerini oluşturma.
  94. 'Otomatik sayı
  95. With !ContractorID
  96. Set .ParentCatalog = cat
  97.  
  98. .Properties("Autoincrement") = True 'Otomatik sayı
  99. .Properties("Description") = "Automatically " & _
  100. "generated unique identifier for this record."
  101. End With
  102.  
  103. 'Gerekli alan
  104. With !Surname
  105. Set .ParentCatalog = cat
  106. .Properties("Nullable") = False 'Gerekli.
  107. .Properties("Jet OLEDB:Allow Zero Length") = False
  108. End With
  109.  
  110. 'Set a validation rule.
  111. With !BirthDate
  112. Set .ParentCatalog = cat
  113. .Properties("Jet OLEDB:Column Validation Rule") = _
  114. "Is Null Or <=Date()"
  115. .Properties("Jet OLEDB:Column Validation Text") = _
  116. "Birth date cannot be future."
  117. End With
  118.  
  119. 'Hyperlink alanı.
  120. With !Web
  121. Set .ParentCatalog = cat
  122. .Properties("Jet OLEDB:Hyperlink") = True 'Hyperlink.
  123. End With
  124. End With
  125.  
  126. 'Yeni tabloyu kataloga kaydetme.
  127. cat.Tables.Append tbl
  128. Debug.Print "tblAdoxContractor created."
  129. Set tbl = Nothing
  130.  
  131. 'Yeni tabloya ulaşma
  132. Set tbl = New ADOX.Table
  133. tbl.Name = "tblAdoxBooking"
  134.  
  135. 'Sütunlara ulaşma.
  136. With tbl.Columns
  137. .Append "BookingID", adInteger
  138. .Append "BookingDate", adDate
  139. .Append "ContractorID", adInteger
  140. .Append "BookingFee", adCurrency
  141. .Append "BookingNote", adWChar, 255
  142.  
  143. 'Alan özelliklerini oluşturma.
  144. With !BookingID 'Otomatik sayı.
  145. .ParentCatalog = cat
  146. .Properties("Autoincrement") = True
  147. End With
  148. With !BookingNote 'Gerekli.
  149. .ParentCatalog = cat
  150. .Properties("Nullable") = False
  151. .Properties("Jet OLEDB:Allow Zero Length") = False
  152. End With
  153. End With
  154.  
  155. 'Yeni tabloyu kaydetme.
  156. cat.Tables.Append tbl
  157. Debug.Print "tblAdoxBooking created."
  158.  
  159. ‘Hafızadaki bilgileri temizleme
  160. Set tbl = Nothing
  161. Set cat = Nothing
  162. End Function
  163.  
  164. Function ModifyTableAdox()
  165. 'Amaç: ADOX ile alan ekleme ve silme.
  166. Dim cat As New ADOX.Catalog
  167. Dim tbl As ADOX.Table
  168. Dim col As New ADOX.Column
  169.  
  170. 'Ulaşma
  171. cat.ActiveConnection = CurrentProject.Connection
  172. Set tbl = cat.Tables("tblAdoxContractor")
  173.  
  174. 'Yeni sütun ekleme
  175. With col
  176. .Name = "MyDecimal"
  177. .Type = adNumeric 'ondalık tip.
  178. .Precision = 28 '28 basamaklı.
  179. .NumericScale = 8 '8 ondalıklı.
  180. End With
  181. tbl.Columns.Append col
  182. Set col = Nothing
  183. Debug.Print "Column added."
  184.  
  185. 'Sütun silme.
  186. tbl.Columns.Delete "MyDecimal"
  187. Debug.Print "Column deleted."
  188.  
  189. ‘Hafızadaki bilgileri temizleme
  190. Set col = Nothing
  191. Set tbl = Nothing
  192. Set cat = Nothing
  193. End Function
  194.  
  195. Function ModifyFieldPropAdox()
  196. 'Amaç: ADOX ile sütun özelliklerini değiştirme.
  197. 'Not: Alan boyutunu değiştiremezsiniz.
  198. Dim cat As New ADOX.Catalog
  199. Dim col As ADOX.Column
  200. Dim prp As ADOX.Property
  201.  
  202. cat.ActiveConnection = CurrentProject.Connection
  203. Set col = cat.Tables("MyTable").Columns("MyField")
  204. 'col.ParentCatalog = cat
  205. Set prp = col.Properties("Nullable")
  206. 'Özelliği okumak
  207. Debug.Print prp.Name, prp.Value, (prp.Type = adBoolean)
  208. 'Özelliği değiştirmek
  209. prp.Value = Not prp.Value
  210.  
  211. 'Hafızadaki bilgileri temizleme
  212. Set prp = Nothing
  213. Set col = Nothing
  214. Set cat = Nothing
  215. End Function
  216.  
  217. Function DeleteTableAdox()
  218. 'Amaç: ADOX ile tablo silmek.
  219. Dim cat As New ADOX.Catalog
  220.  
  221. cat.ActiveConnection = CurrentProject.Connection
  222. cat.Tables.Delete "MyTable"
  223. Set cat = Nothing
  224. End Function
  225.  
  226. Function CreateIndexesAdox()
  227. 'Amaç: ADOX ile indexleme yapmak.
  228. Dim cat As New ADOX.Catalog
  229. Dim tbl As ADOX.Table
  230. Dim ind As ADOX.Index
  231.  
  232. 'Ulaşma
  233. Set cat.ActiveConnection = CurrentProject.Connection
  234. Set tbl = cat.Tables("tblAdoxContractor")
  235.  
  236. 'Anahtar alan oluşturmak
  237. Set ind = New ADOX.Index
  238. ind.Name = "PrimaryKey"
  239. ind.PrimaryKey = True
  240. ind.Columns.Append "ContractorID"
  241. tbl.Indexes.Append ind
  242. Set ind = Nothing
  243.  
  244. 'Bir sütuna index oluşturma.
  245. Set ind = New ADOX.Index
  246. ind.Name = "Inactive"
  247. ind.Columns.Append "Inactive"
  248. tbl.Indexes.Append ind
  249. Set ind = Nothing
  250.  
  251. 'Çoklu alanı indexleme.
  252. Set ind = New ADOX.Index
  253. ind.Name = "FullName"
  254. With ind.Columns
  255. .Append "Surname"
  256. .Append "FirstName"
  257. End With
  258. tbl.Indexes.Append ind
  259.  
  260. 'Hafızadaki bilgileri temizleme
  261. Set ind = Nothing
  262. Set tbl = Nothing
  263. Set cat = Nothing
  264. Debug.Print "tblAdoxContractor indexes created."
  265. End Function
  266.  
  267. Function DeleteIndexAdox()
  268. 'Amaç: ADOX ile indexleri silmek.
  269. Dim cat As New ADOX.Catalog
  270. cat.ActiveConnection = CurrentProject.Connection
  271. cat.Tables("tblAdoxContractor").Indexes.Delete "Inactive"
  272. Set cat = Nothing
  273. End Function
  274.  
  275. Function CreateKeyAdox()
  276. 'Amaç: ADOX ile ilişkilendirme oluşturma.
  277. Dim cat As New ADOX.Catalog
  278. Dim tbl As ADOX.Table
  279. Dim ky As New ADOX.Key
  280.  
  281. Set cat.ActiveConnection = CurrentProject.Connection
  282. Set tbl = cat.Tables("tblAdoxBooking")
  283.  
  284. ' tblAdoxContractor.ContractorID alanına yabancı anahtar oluşturmak
  285. With ky
  286. .Type = adKeyForeign
  287. .Name = "tblAdoxContractortblAdoxBooking"
  288. .RelatedTable = "tblAdoxContractor"
  289. .Columns.Append "ContractorID" 'Tek alan.
  290. .Columns("ContractorID").RelatedColumn = "ContractorID"
  291. .DeleteRule = adRISetNull
  292. End With
  293. tbl.Keys.Append ky
  294.  
  295. Set ky = Nothing
  296. Set tbl = Nothing
  297. Set cat = Nothing
  298. Debug.Print "Key created."
  299. End Function
  300.  
  301. Function ShowKeyAdox(strTableName As String)
  302. 'Amaç: ADOX ile ilişkileri gösterme.
  303. Dim cat As New ADOX.Catalog
  304. Dim tbl As ADOX.Table
  305. Dim ky As ADOX.Key
  306. Dim strRIName As String
  307.  
  308. Set cat.ActiveConnection = CurrentProject.Connection
  309. Set tbl = cat.Tables(strTableName)
  310.  
  311. For Each ky In tbl.Keys
  312. With ky
  313. Select Case .DeleteRule
  314. Case adRINone
  315. strRIName = "No delete rule"
  316. Case adRICascade
  317. strRIName = "Cascade delete"
  318. Case adRISetNull
  319. strRIName = "Cascade to null"
  320. Case adRISetDefault
  321. strRIName = "Cascade to default"
  322. Case Else
  323. strRIName = "DeleteRule of " & .DeleteRule & " unknown."
  324. End Select
  325. Debug.Print "Key: " & .Name & ", to table: " & .RelatedTable & ", with: " & strRIName
  326. End With
  327. Next
  328.  
  329. Set ky = Nothing
  330. Set tbl = Nothing
  331. Set cat = Nothing
  332. End Function
  333.  
  334. Function DeleteKeyAdox()
  335. 'Amaç: ADOX ile ilişkileri silme.
  336. Dim cat As New ADOX.Catalog
  337. Dim tbl As ADOX.Table
  338.  
  339. Set cat.ActiveConnection = CurrentProject.Connection
  340. cat.Tables("tblAdoxBooking").Keys.Delete "tblAdoxContractortblAdoxBooking"
  341.  
  342. Set cat = Nothing
  343. Debug.Print "Key deleted."
  344. End Function
  345.  
  346. Function CreateViewAdox()
  347. 'Amaç: ADOX ile sorgu oluşturma.
  348. Dim cat As New ADOX.Catalog
  349. Dim cmd As New ADODB.Command
  350. Dim strSql As String
  351.  
  352. 'Ulaşma.
  353. cat.ActiveConnection = CurrentProject.Connection
  354.  
  355. 'Komut cümlesi özelliğine sql cümlesi yükleme
  356. strSql = "SELECT BookingID, BookingDate FROM tblDaoBooking;"
  357. cmd.CommandText = strSql
  358.  
  359. 'Komutu koleksiyon listesine ekleme.
  360. cat.Views.Append "qryAdoxBooking", cmd
  361.  
  362. 'Hafızadaki bilgileri temizleme.
  363. Set cmd = Nothing
  364. Set cat = Nothing
  365. Debug.Print "View created."
  366. End Function
  367.  
  368. Function CreateProcedureAdox()
  369. 'Amaç: ADOX parametre veya fonksiyon sorgusu oluşturma.
  370. Dim cat As New ADOX.Catalog
  371. Dim cmd As New ADODB.Command
  372. Dim strSql As String
  373.  
  374. 'Ulaşma.
  375. cat.ActiveConnection = CurrentProject.Connection
  376.  
  377. 'SQL cümlesini Komut cümlesi özelliğine atama.
  378. strSql = "PARAMETERS StartDate DateTime, EndDate DateTime; " & _
  379. "DELETE FROM tblAdoxBooking " & _
  380. "WHERE BookingDate Between StartDate And EndDate;"
  381. cmd.CommandText = strSql
  382.  
  383. 'Komutu koleksiyon listesine ekleme.
  384. cat.Procedures.Append "qryAdoxDeleteBooking", cmd
  385.  
  386. ‘Hafızadaki bilgileri temizleme.
  387. Set cmd = Nothing
  388. Set cat = Nothing
  389. Debug.Print "Procedure created."
  390. End Function
  391.  
  392. Function ShowProx()
  393. 'Amaç: ADOX ile sorguları listeleme.
  394. Dim cat As New ADOX.Catalog
  395. Dim proc As ADOX.Procedure
  396. Dim vw As ADOX.View
  397.  
  398. cat.ActiveConnection = CurrentProject.Connection
  399.  
  400. Debug.Print "Procedures: " & cat.Procedures.Count
  401. For Each proc In cat.Procedures
  402. Debug.Print proc.Name
  403. Next
  404. Debug.Print cat.Procedures.Count & " procedure(s)"
  405. Debug.Print
  406.  
  407. Debug.Print "Views " & cat.Views.Count
  408. For Each vw In cat.Views
  409. Debug.Print vw.Name
  410. Next
  411.  
  412. Set cat = Nothing
  413. End Function
  414.  
  415. Function ExecuteProcedureAdox()
  416. 'Amaç: ADOX ile parametre sorgusu çalıştırma.
  417. Dim cat As New ADOX.Catalog
  418. Dim cmd As ADODB.Command
  419. Dim lngCount As Long
  420.  
  421. 'Ulaşma.
  422. cat.ActiveConnection = CurrentProject.Connection
  423. Set cmd = cat.Procedures("qryAdoxDeleteBooking").Command
  424.  
  425. 'Parametreleri oluşturma
  426. cmd.Parameters("StartDate") = #1/1/2004#
  427. cmd.Parameters("EndDate") = #12/31/2004#
  428.  
  429. 'Olayı çalıştırma
  430. cmd.Execute lngCount
  431. Debug.Print lngCount & " record(s) deleted."
  432.  
  433. 'Alternatif: parametreleri matrisle verme.
  434. 'cmd.Execute , Array(#1/1/2004#, #12/31/2004#)
  435.  
  436. 'Hafızadaki bilgileri temizleme.
  437. Set cmd = Nothing
  438. Set cat = Nothing
  439. End Function
  440.  
  441. Function DeleteProcedureAdox()
  442. 'Amaç: ADOX ile sorgu silme.
  443. Dim cat As New ADOX.Catalog
  444. Dim cmd As ADODB.Command
  445. Dim lngCount As Long
  446.  
  447. 'Ulaşma.
  448. cat.ActiveConnection = CurrentProject.Connection
  449. cat.Procedures.Delete "qryAdoxDeleteBooking"
  450. Set cat = Nothing
  451. End Function
  452.  
  453. Function CreateDatabaseAdox()
  454. 'Amaç: ADOX ile veritabanı oluşturma.
  455. Dim cat As New ADOX.Catalog
  456. Dim strFile As String
  457.  
  458. strFile = "C:\SampleADOX.mdb"
  459. cat.Create "Provider='Microsoft.Jet.OLEDB.4.0';" & _
  460.   "Data Source='" & strFile & "'"
  461. Set cat = Nothing
  462. Debug.Print strFile & " created."
  463. End Function
  464.  
  465. Function DeleteAllAndResetAutoNum(strTable As String) As Boolean
  466. 'Amaç: ADOX ile tüm verileri silme ve otomatik sayıyı sıfırlama.
  467. ' Otomatik sayı alanına nasıl ulaşışldığını gösterme.
  468. 'Argüman: Tablo adını değiştirme.
  469. 'Geriye dönen: İşlem tamam ise doğru.
  470. Dim cat As New ADOX.Catalog
  471. Dim tbl As ADOX.Table
  472. Dim col As ADOX.Column
  473. Dim strSql As String
  474.  
  475. 'Tüm verileri silme.
  476. strSql = "DELETE FROM [" & strTable & "];"
  477. CurrentProject.Connection.Execute strSql
  478.  
  479. 'Tüm otomatik sayılı alanları bulup sıfırlama.
  480. cat.ActiveConnection = CurrentProject.Connection
  481. Set tbl = cat.Tables(strTable)
  482. For Each col In tbl.Columns
  483. If col.Properties("Autoincrement") Then
  484. col.Properties("Seed") = 1
  485. DeleteAllAndResetAutoNum = True
  486. End If
  487. Next
  488. End Function
  489.  
  490. Function GetSeedADOX(strTable As String, Optional ByRef strCol As String) As Long
  491. 'Amaç: Otomatik sayı kökünü okuma.
  492. 'Arguman: strTable kontrol edilen tablo.
  493. ' strCol = Alan adı. Eğer var ise kod onu bulup çıkarıyor.
  494. 'Geriye dönen: Kök sayısı.
  495. Dim cat As New ADOX.Catalog 'ADOX un kök nesnesi.
  496. Dim tbl As ADOX.Table 'Tablo içindeki her tablo.
  497. Dim col As ADOX.Column 'Tablo içindeki her sütun.
  498.  
  499. 'Hâlihazırdaki veritabanının listesini işaretliyoruz.
  500. Set cat.ActiveConnection = CurrentProject.Connection
  501. Set tbl = cat.Tables(strTable)
  502.  
  503. 'Otomatik sayılı alanı bulana kadar dön.
  504. For Each col In tbl.Columns
  505. If col.Properties("Autoincrement") Then
  506. strCol = col.Name
  507. GetSeedADOX = col.Properties("Seed")
  508. Exit For 'There can be only one AutoNum.
  509. End If
  510. Next
  511.  
  512. 'Hafızadaki bilgileri temizleme
  513. Set col = Nothing
  514. Set tbl = Nothing
  515. Set cat = Nothing
  516. End Function
  517.  
  518. Function ResetSeed(strTable As String) As String
  519. 'Amaç: ADOX ile otomatik sayı kökünü sıfırlama.
  520. Dim strAutoNum As String 'Otomatik sayı tipli alan adı.
  521. Dim lngSeed As Long 'Kökün halıhazırdaki değeri.
  522. Dim lngNext As Long 'Kullanılmayın sonraki değer.
  523. Dim strSql As String
  524. Dim strResult As String
  525.  
  526. lngSeed = GetSeedADOX(strTable, strAutoNum)
  527. If strAutoNum = vbNullString Then
  528. strResult = "AutoNumber not found."
  529. Else
  530. lngNext = Nz(DMax(strAutoNum, strTable), 0) + 1
  531. If lngSeed = lngNext Then
  532. strResult = strAutoNum & " already correctly set to " & lngSeed & "."
  533. Else
  534. Debug.Print lngNext, lngSeed
  535. strSql = "ALTER TABLE [" & strTable & "] ALTER COLUMN [" & strAutoNum & "] COUNTER(" & lngNext & ", 1);"
  536. Debug.Print strSql
  537. CurrentProject.Connection.Execute strSql
  538. strResult = strAutoNum & " reset from " & lngSeed & " to " & lngNext
  539. End If
  540. End If
  541. ResetSeed = strResult
  542. End Function





  Alıntı
Bu mesajı beğenenler:
#2
Bu önemli bilgileri örneklerle de anlatmışsınız. Teşekkürler elinize sağlık.



  Alıntı
Bu mesajı beğenenler:
#3
Alıntı: Function CreateKeyAdox()
'Amaç: ADOX ile ilişkilendirme oluşturma.
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim ky As New ADOX.Key

Set cat.ActiveConnection = CurrentProject.Connection
Set tbl = cat.Tables("tblAdoxBooking")

Hocam iyi geceler,
bu ilişkilendirme olayında "Bilgi Tutarlığı Zorla" ve "İlişkili Alanları Ardaarda güncelleştir" yapılabilirmi?

Teşekkürler.



  Alıntı
Bu mesajı beğenenler:
#4
Elbette oluşturulabilir, o zaman fonksiyona parametre de eklemek gerekir:

Visual Basic
  1. Sub CreateRelationship(strDBPath As String,_
  2. strForeignTbl As String, strRelName As String,_
  3. strFTKey As String,strRelatedTbl As String, strRTKey As String)
  4. Dim catDB As ADOX.Catalog
  5. Dim tbl As ADOX.Table
  6. Dim key As ADOX.Key
  7.  
  8. Set catDB = New ADOX.Catalog
  9. ' Open the catalog.
  10. catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  11. "Data Source =" & strDBPath
  12.  
  13. Set key = New ADOX.Key
  14. ' Create the foreign key to define the relationship.
  15. With Key
  16. ' Specify name for the relationship in the Keys collection.
  17. .Name = strRelName
  18. ' Specify the related table's name.
  19. .RelatedTable = strRelatedTbl
  20. .Type = adKeyForeign
  21. ' Add the foreign key field to the Columns collection.
  22. .Columns.Append strFTKey
  23. ' Specify the field the foreign key is related to.
  24. .Columns(strFTKey).RelatedColumn = strRTKey
  25. End With
  26.  
  27. Set tbl = New ADOX.Table
  28. ' Open the table and add the foreign key.
  29. Set tbl = catDB.Tables(strForeignTbl)
  30. tbl.Keys.Append key
  31.  
  32. Set catDB = Nothing
  33. End Sub





  Alıntı
Bu mesajı beğenenler:
#5
Teşekkürler Sayın modalı
Değişkenleri gösterebilirmisiniz.
İyi geceler.



  Alıntı
Bu mesajı beğenenler:
#6
Çok güzel bir paylaşım.. Teşekkürler sayın modalı.. S7miloe



  Alıntı
Bu mesajı beğenenler:


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi