Hello Ken, Richard an All,

Just see how simple it can be to connect PostgreSQL 7.xx or 8.xx from within Rev 2.xx (Mac OS X and Linux, Win32 untested) or Rev 2.xx and Metacard 2.3 and above (Linux, Win32 untested) :

to stick in the main stack's script :

on preopenstack
...
if the platform is not "MacOS" then put "psql -h localhost dpim -U postgres" into PgPath
else
repeat for each item i in revOpenDatabases()
get revdb_disconnect(i)
end repeat
put revOpenDatabase("PostgreSQL","localhost","dpim","postgres","postgres") into PGLinkOpen
end if
...
end preopenstack



function presave r set itemdel to "�" put item 1 of r into s put item 2 of r into t

  set itemdel to "&"
  replace numtochar(10) with "##10;#" in s
  replace "\'" with "##11;#" in s
  replace numtochar(34) with "##34;#" in s
  replace "##11;###11;#" with "" in s

  if the platform is "macos" then put mactoiso(isotomac(s)) into s

if "&CCL=insert&" is in s then put item itemoffset("personid=",s) of s & return into datatosave
else put item itemoffset("recordid=",s) of s & return into datatosave


  if itemoffset("credatid=",s) is not "0" then
    put item itemoffset("credatid=",s) of s & return after datatosave
    put item itemoffset("creserid=",s) of s & return after datatosave
  end if

  put item itemoffset("derdatid=",s) of s & return & \
      item itemoffset("modserid=",s) of s & return after datatosave

  repeat for each item i in s
    if char 1 to 4 of i is t then put i & return after datatosave
  end repeat

  repeat for each char c in datatosave
    try
      if c is "_"
      then put " " after datatosavec
      else if chartonum(c) > 223
      then put "&#" & chartonum(c) & ";" after datatosavec
      else if chartonum(c) > 191
      then put "&#" & chartonum(c) & ";" after datatosavec
      else if chartonum(c) = 39
      then put "&#" & chartonum(c) & ";" after datatosavec
      else put c after datatosavec
    catch errornum
      if c is not char 1 of datatosave
      then if c is not char -1 of datatosave
      then put "_" after datatosavec
    end try
  end repeat

  put char 1 to 8 of line -1 of datatosavec && "RECORDED" into aa

if "&CCL=insert&" is in s then
put " ( " into insertcolnames
put " values ( " into insertcoldatas
repeat for each line l in datatosavec
if l is line -1 of datatosavec then
put char 1 to 8 of l && " ) " after insertcolnames
put "'" & aa & "' ) " after insertcoldatas
else
put char 1 to 8 of l && " , " after insertcolnames
put "'" & char 10 to -1 of l & "' , " after insertcoldatas
end if
end repeat
put insertcolnames & insertcoldatas into updatecols
else
repeat for each line l in datatosavec
if l is line -1 of datatosavec then put char 1 to 8 of l && "= '" & aa & "'" after updatecols
else put char 1 to 8 of l && "= '" & char 10 to -1 of l & "' , " after updatecols
end repeat
end if


  put updatecols

  return updatecols
end presave


function parsesql s
repeat for each char c in s
try
if chartonum(c) > 223
then put "&#" & chartonum(c) & ";" after t
else if chartonum(c) > 191
then put "&#" & chartonum(c) & ";" after t
else put c after t
catch errornum
if c is not char 1 of s
then if c is not char -1 of s
then put "_" after t
end try
end repeat
replace "\" with "" in t
replace "[" with "&" in t
replace "]" with "\" in t
if the platform is "MacOS" then
if "select" is not in t then get revdb_QueryBLOB(PGLinkOpen,t)
else
put revdb_QueryList("|",return,PGLinkOpen,t) into pgreply
repeat for each line l in pgreply
put char 1 to -1+offset("|",l) of l && char offset("|",l) to -1 of l & return after d
end repeat
return d & "(" & the num of lines in pgreply && "rows)"
end if
else return shell("echo" && quote && t && quote && "|" && PgPath)
end parsesql


to stick where you want in the transcript/metatalk code to catch your SQL requests results (the four basic SQL queries) :

get parsesql("insert into dpim0001" && presave(PostIn & "�0001"))

get parsesql("update dpim0001 set" && presave(PostIn & "�0001 where recordid='" & \
char 5 to -1 of item itemoffset("CCL=",PostIn) of PostIn & "'")

get parsesql("delete from dpim0001 where recordid='" & char 5 to -1 of item itemoffset("CCL=",PostIn) of PostIn & "'")

get parsesql("select * from" && k && "where" && word 1 to -2 of lesclauses)
if word 1 to -1 of it is not "(0 rows)" then put line 1 to -2 of it & return after lareply


Have fun, Friends ! Rev is just most usable than any other language (Java and .NET included) in about databases access too ;-)

All the best,

Pierre


Le 14 mai 05, � 07:51, Ken Ray a �crit :

On 5/14/05 12:28 AM, "Chipp Walters" <[EMAIL PROTECTED]> wrote:

Hi Ken,

Here's a couple of things you may want to consider.

Thanks, Chipp... yes, we'll have multiple concurrent users so I guess it's
MySQL or PostgreSQL. My understanding is that in general, MySQL has better
performance than PostgreSQL, does that jibe with your take on the two DBs?



Ken Ray Sons of Thunder Software Web site: http://www.sonsothunder.com/ Email: [EMAIL PROTECTED]


_______________________________________________ use-revolution mailing list [email protected] http://lists.runrev.com/mailman/listinfo/use-revolution

_______________________________________________
use-revolution mailing list
[email protected]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to