7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
Reply by |
Message
on : 20/9/2545 10:15:33
|
สุภาพ (R00976)
|
ลองโค้ดข้างล่างดูครับ ผมจะใช้บ่อยมากในการทำโปรแกรมทุกตัว เพราะจะต้องทำคู่มือให้ผู้ใช้หรือลูกค้าเสมอ
Function DBDetails(strDB As String) As String
Dim dbs As Database, tdf As TableDef, fld As Field
Set dbs = OpenDatabase(strDB)
For Each tdf In dbs.TableDefs
Debug.Print tdf.Name
For Each fld In tdf.Fields
Debug.Print " ---> " & fld.Name & " Field Type: " & fld.Type
Next
Next
dbs.Close
Set dbs = Nothing
End Function
ตัวอย่างที่มีรายละเอียดมากกว่านี้อยู่ที่บ้านครับ เดี๋ยวผมจะไปค้นดูก่อน ซึ่งผมจะมีโค้ดสำหรับแปลง Field Type ให้อยู่ในรูปของ Text, Number, ect ด้วย พร้อมกับแสดง Caption, Description, etc.
ผมเคย d/l ตัวอย่างที่เป็น mde ของต่างประเทศมาไว้เหมือนกัน เขาจะทำไว้ค่อนข้างละเอียดมาก มีการแสดงว่าฟีลด์ไหนเป็น Index, Relationships และพิมพ์ออกมาเป็นรายงานได้ด้วย ต้องไปค้นดูที่บ้านก่อนครับ
|
Back to Top |
|
|
Reply by |
Message
on : 20/9/2545 11:24:56
|
BADMan (R00977)
|
เยี่ยมมากครับ อ.สุภาพ ผมจะได้นำไปดัดแปลงเพื่อ อ่านฐานข้อมูลที่มีการใส่ password ไว้ ผมเพียงคิดเล่นๆเท่านั้นเองแหละครับ ขอบคุณมากครับ
|
Back to Top |
|
|
Reply by |
Message
on : 21/9/2545 20:19:25
|
สุภาพ (R00983)
|
ผมเจอแหล่งที่มาของตัวอย่างที่ได้รับปากไว้ว่าจะนำมาให้แล้วครับ ให้ไปเอาที่
http://www.liquorman.net/Downloads/documentor.zip ครับ
|
Back to Top |
|
|
Reply by |
Message
on : 26/3/2546 17:00:44
|
สมนึก (R02058)
|
ขอบคุณมากครับ
|
Back to Top |
|
|
Reply by |
Message
on : 26/3/2546 17:25:27
|
amn (R02060)
|
convert เป็น Version 2000 Error เยอะจัง งงไปหมด
|
Back to Top |
|
|
Reply by |
Message
on : 26/3/2546 20:02:26
|
สุภาพ (R02061)
|
ผมได้เข้าไปแก้โค้ดสำหรับ Access 2000 ให้แล้วครับ
ส่วนที่มีปัญหาคือ DAO 3.6 เพราะจะมี Objects ไปซ้ำกับของ ADO
สำหรับท่านที่คิดจะแก้โค้ดเองให้
1. เลือก Microsoft DAO 3.6 Object Library ใน References ด้วย
2. แก้โค้ดนี้ในปุ่มที่ใช้สร้าง Report ให้เป็น
Private Sub cmdReport_Click()
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim rsFields As DAO.Recordset
Dim varTable As Variant
Dim fld As DAO.Field
Dim Cntr As Integer
Dim varProperty() As Variant
Dim idx As DAO.Index
Dim rsIndexes As DAO.Recordset
Dim CurDb As DAO.Database
Set CurDb = CurrentDb
' first need to delete all records in tblFields & tblindexes
CurDb.Execute ("delete * from tblFields")
CurDb.Execute ("delete * from tblindexes")
' now, cycle thru selected tables, and write field information to tblFields.
' Each field in tblFields is named after the FieldName in Properties collection,
' but is preceded by 'fld'. So, fldFieldType is used for the Field Type property.
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(txtDB)
Set rsFields = CurDb.OpenRecordset("select * from tblfields", dbOpenDynaset)
Set rsIndexes = CurDb.OpenRecordset("select * from tblindexes", dbOpenDynaset)
ReDim varProperty(2 To rsFields.Fields.Count - 1)
For Each varTable In lstTables.ItemsSelected
Set tbl = db.TableDefs(lstTables.ItemData(varTable))
For Each fld In tbl.Fields
rsFields.AddNew
rsFields!fldTable = lstTables.ItemData(varTable)
For Cntr = 1 To rsFields.Fields.Count - 1
On Error Resume Next
rsFields(Cntr) = fld.Properties(Mid(rsFields(Cntr).Name, 4))
Next Cntr
On Error GoTo 0
rsFields.Update
Next fld
For Each idx In tbl.Indexes
For Each fld In idx.Fields
rsIndexes.AddNew
rsIndexes!idxTable = lstTables.ItemData(varTable)
rsIndexes!idxIndex = idx.Name
rsIndexes!idxUnique = idx.Unique
rsIndexes!idxPrimary = idx.Primary
rsIndexes!idxForeign = idx.Foreign
rsIndexes!idxRequired = idx.Required
rsIndexes!idxIgnoreNulls = idx.IgnoreNulls
rsIndexes!idxField = fld.Name
rsIndexes!idxSortOrder = IIf(fld.Attributes = 0, "Ascending", "Descending")
rsIndexes.Update
Next fld
Next idx
Next varTable
DoCmd.OpenReport "rptFields", acViewPreview
End Sub
หรือจะ d/l ตัวที่ผมได้แก้ไขแล้วจากที่นี่
|
Back to Top |
|
|
Reply by |
Message
on : 27/3/2546 20:53:04
|
amn (R02077)
|
ขอบคุณครับ
|
Back to Top |
|
|
|