*-- Declare the objects we'll use later, so that >*-- IntelliSense can be used > >LOCAL oCat As adox.catalog >LOCAL oTable As Adox.table >LOCAL oConn As Adodb.connection >LOCAL oRs As Adodb.recordset >LOCAL oCmd As Adodb.command > >*-- Setup code >SET EXCLUSIVE Off >Clear >RELEASE ALL >CLOSE ALL >CLEAR ALL > >IF File("TestDBC.DBC") > Erase TestDBC.DBC >Endif > >IF File("TestDBC.Dct") > Erase TestDBC.Dct >Endif > >IF File("TestDBC.Dcx") > Erase TestDBC.Dcx >Endif > >IF File("TestTable.dbf") > Erase TestTable.dbf >Endif > >IF File("TestTable2.dbf") > Erase TestTable2.dbf >Endif > >*-- Three ADOX objects are needed: >*-- Catalog - equivalent to a DBC >*-- Connection - Similar to an ODBC connection >*-- Table - equivalent to a DBF >oCat = CREATEOBJECT("adox.catalog") >oConn = CREATEOBJECT("adodb.connection") >oTable = CREATEOBJECT("adox.table") > >*-- Create a catalog using a connection string >*-- Values for Provider could also be: >*-- Vfpoledb.1 >*-- Vfpoledb >oCat.Create("Provider=Vfpoledb.vfpoledb;Data Source=.\TestDBC.dbc") > >*-- Code below is redundant, since creating the catalog >*-- creates a connection as well > >*-- oConn.ConnectionString = "Provider=Vfpoledb.vfpoledb;Data Source=.\TestDBC.dbc" >*-- oConn.Open >*-- oCat.ActiveConnection = oConn > >*-- Create columns for our table >oTable.Columns.Append("Cust_ID", 3, 5) && adInteger, 5 >oTable.Columns.Append("FName", 129, 20) && adChar >oTable.Columns.Append("LName", 129, 20) >oTable.Columns.Append("Addr", 129, 20) >oTable.Columns.Append("City", 129, 20) >oTable.Columns.Append("PostCode", 129, 10) > >*-- Set all columns to be nullable, since they're non-nullable by default >FOR i = 0 TO oTable.Columns.Count - 1 > oTable.Columns(i).Attributes = 2 && adColNullable >ENDFOR > >oTable.Name = "TestTable" > >*-- Once the table is created, it needs to be added to the catalog >oCat.Tables.Append(oTable) > >*-- We need to change the connection mode, but since we can't do it >*-- after the connection is opened, as with the Catalog.Create method, >*-- we'll create a new connection >oConn.ConnectionString = "Provider=Vfpoledb.vfpoledb;Data Source=.\TestDBC.dbc" >oConn.Mode = 16 && adModeShareDenyNone >oConn.Open > >*-- Create our recordset, which is what ADO uses to collect data >*-- using a SELECT statement or other means >oRs = NEWOBJECT("adodb.recordset") >oRs.CursorLocation = 3 && adUseClient >oRs.ActiveConnection = oConn >oRs.Open("select * from testtable", oConn, 3, 3) > >*-- AddNew method using a technique similar to INSERT >oRs.AddNew("Cust_ID", 1234) > >*-- Or do something like an APPEND BLANK, then fill in the fields >oRs.AddNew() >oRs.Fields("Cust_ID").Value = "12345" >oRs.Fields(1).Value = "Mike" >oRs.Fields("Lname").Value = "Stewart" >oRs.Fields("Addr").Value = "1234 Main St." >oRs.Fields("City").Value = "Redmond" >oRs.Fields("PostCode").Value = "98052" > >*-- Since we did two AddNews, we'll do a batch update to gather both records >oRs.UpdateBatch >oRs.Close() > >*-- Verify that the data are there >USE testtable >BROWSE > >oRs.Open("select * from testtable where FName = 'Mike'", oConn, 3, 3) > >*-- Now make a change to one of the fields >oRs.Fields("Fname").Value = "Michael" > >*-- Only one row changed, so we'll just use Update >oRs.Update() >oRs.Close() > >*-- Verify the change >USE testtable >BROWSE