RB & SQL

Barney barney at custombased.com
Wed Feb 26 22:12:21 CST 2003


Art,

Here is one way of doing it.

//====Create Database======

 dim f as folderitem
 dim res as boolean
 Dim DB as vdatabase
  
  f=getsaveFolderItem("MyFileType", "DataBase1.vdb" ) //DB
  if f <> nil then 
   
    DB = new Vdatabase
    DB.Creator = "VALA"       // optional
    
    
    
    // //this is straight out of Valentine pdf's
    res = DB.Create( f, 1, 32 * 1024 )
    
    if(res = false) then
      MsgBox "Can't create database. Error: " + Str(DB.ErrNumber)
     end if


//===Open database create table and fields===

Dim db as vdatabase
Dim f as folderitem
dim res as boolean
Dim BO as VBaseObject
Dim fld as Vfield 
  
  f  = getopenfolderItem("any")
if f <> nil then  
db = new vdatabase
  
  res = db.open(f)
  
  if res = true then
    msgBox "dbbase Open"
  else
    msgBox "Sorry couldn't open"
    return
  end if
End if

  
  //create base object ( table )
  BO = Db.CreateBaseObject("Table1")

 //create fields
    fld = BO.createfield( "Id", 5) //VUshort
    fld = BO.createfield( "category", 10,30) //VString  ( 30 characters )
    fld = BO.createfield( "Comments", 26, 504) //Vvarchar
    fld = BO.createfield( "Cost_Price", 8) //VFloat
    fld = BO.createfield( "Delete", 2) //VBoolean
    fld = BO.createfield( "Purchase_Date", 12) //VDate
    fld = BO.createfield( "Qty", 4) //VShort

DB.flush


//===Add records====

Dim cur as vcursor
Dim err as boolean

cur = db.sqlselect("Select * from table1")  //DB is tucked away as a
property of application class etc
cur.field("id").setstring("1")
cur.field("category").setstring("Sports")
cur.field("Purchase_Date").setstring("01/02/2003")
err = cur.add()
db.flush


It pays to make DB a property somewhere like of an application class
then its there for good and you can refer to it throughout your project.

Hopefully no syntax errors in above but could be. Email any problems.

Barney

CUSTOMBASED - Database Systems
<http://www.custombased.com>




> Anyone please,
> 
> Is it possible to create an RB VDataBase as:
> 
> db = new VDataBase
> res = db.Create(ff,1,32*1024)    ff=folderitem
> 
> and then populate with tables using Sql as:
> 
> db = New VDatabase
> ok = db.Open(f)
> 
> s = "create table AntList "
> s = s + "("
> s = s + "AntIdx vvarchar not null unique, "
> ....
> s = s + ")"
> 
> err = db.SqlExecute(s)
> 
> db.Flush
> 
> and then use standard Sql INSERT INTO, UPDATE, etc.
> to add and extract data.
> 
> I can't seem to get the tables into the db using
> this procedure. I just wanted to know if it is
> my approach before spending more days on it.
> 
> It looks like I can do this from the TEST_
> routines. But, nothing I try gets the job done.
> 
> Thanks,
> Art
> 
> ps
> 
> It looks like (from TEST_) that different result
> codes are being generated for db.SqlExecute().
> Is there a list of these codes somewhere? Or what
> they should be for successful execution?
> 
> 
> _______________________________________________
> Valentina mailing list
> Valentina at lists.macserve.net
> http://lists.macserve.net/mailman/listinfo/valentina



More information about the Valentina mailing list