OSDN Git Service

Update to pgaccess 0.90.
authorBruce Momjian <bruce@momjian.us>
Thu, 8 Oct 1998 22:50:20 +0000 (22:50 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 8 Oct 1998 22:50:20 +0000 (22:50 +0000)
src/bin/pgaccess/README.pga
src/bin/pgaccess/index.html
src/bin/pgaccess/irix.html [new file with mode: 0644]
src/bin/pgaccess/pgaccess.tcl

index f5a5350..175a983 100644 (file)
@@ -22,7 +22,7 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 ---------------------------------------------------------------------------
 
 
-PGACCESS 0.88 7 June 1998
+PGACCESS 0.90 18 September 1998
 ================================
 I dedicate this program to my little daughters Ana-Maria and Emilia and to my
 wife for their understanding. I hope they will forgive me for spending so many
@@ -44,7 +44,7 @@ four days of hard work to get it as you see it now.
 2.How to INSTALL ?
 
 You will need Tcl/Tk package, I am using now Tcl 7.6 and Tk 4.2.
-PgAccess is running also on Tcl/Tk 8.0
+PgAccess is running fine also on Tcl/Tk 8.0
 
 Also, you will need the PostgreSQL to Tcl interface library, lined as a
 Tcl/Tk 'load'-able module.  It is called libpgtcl and the source is
@@ -101,7 +101,7 @@ Queries
 - define, edit and store "user defined queries"
 - save view layout
 - can store queries as views
-- execution of queries
+- execution of queries  with optional user input parameters ( select * from invoices where year=[parameter "Year of selection"] )
 - viewing of select type queries result
 - running action queries (insert, update, delete)
 - visual query builder with drag & drop support, table aliasing
@@ -152,10 +152,10 @@ Some information about table structure, no. of fields, records would
 be also good.
 
 ===========================================================================
-You would find always the last version at   http://www.flex.ro/pgaccess
+You would find always the latest version at   http://www.flex.ro/pgaccess
 
 Please feel free to e-mail me with any suggestion or bug description
-that will help to improve this.
+that will help to improve it.
 
 Constantin Teodorescu <teo@flex.ro>
 
index 7571218..99ccb99 100644 (file)
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
 <HTML>
 <HEAD>
-   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-   <META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; I; Linux 2.0.32 i586) [Netscape]">
    <TITLE>PgAccess - a Tcl/Tk PostgreSQL interface</TITLE>
+   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+   <META NAME="GENERATOR" CONTENT="Mozilla/3.04Gold (X11; I; Linux 2.0.33 i586) [Netscape]">
 </HEAD>
 <BODY BGCOLOR="#FFFFFF">
 
-<H1>
-PgAccess - a database management tool for <A HREF="http://www.postgreSQL.org">PostgreSQL</A></H1>
+<H1>PgAccess - a free database management tool for <A HREF="http://www.postgreSQL.org">PostgreSQL</A></H1>
 
-<HR>
+<P>
+<HR></P>
 
-<P>This program is protected by the following <A HREF="copyright.html">copyright</A>
-<LI>
-<A HREF="pgaccess-0.88.tar.gz">Download the last version of PgAccess (press
-shift and click this link)</A>.</LI>
+<LI><A HREF="pgaccess-0.90.tar.gz">Download the last version of PgAccess
+(press shift and click this link)</A>.</LI>
 
+<CENTER><P>Latest version of PgAccess is 0.90 , 18 September 1998 ! <BR>
+<BR>
+&nbsp; <B><FONT COLOR="#FF0000">NEW * NEW * NEW *</FONT></B> <B><FONT COLOR="#FF0000">
+NEW *</FONT></B> ==== &gt; <B><FONT SIZE=+1>QUERY PARAMETERS</FONT></B>
+(see section Queries below)<BR>
+<BR>
+Precompiled libpgtcl and libpq binaries for i386 are <A HREF="ftp://ftp.flex.ro/pub/pgaccess">here
+</A>!!! <BR>
+&nbsp; </P></CENTER>
 
-<P>Latest version of PgAccess is 0.88 , 7 June 1998 !
-<BR><br>&nbsp;
-<font color='red'><b>NEW * NEW * NEW *</b></font> Precompiled libpgtcl and libpq binaries for i386 are <a href='ftp://ftp.flex.ro/pub/pgaccess'> here </a>!!!
-<BR>&nbsp;
 <CENTER><TABLE BORDER=3 CELLSPACING=0 CELLPADDING=0 WIDTH="100%" BGCOLOR="#FFB6C1" >
 <TR>
 <TD>
-<CENTER><B><FONT SIZE=+2>PgAccess can now design <A HREF="forms.html">Forms</A></FONT></B>,
-<B><FONT SIZE=+2><A HREF="pga-rad.html">Reports and Scripts</A></FONT></B>&nbsp;</CENTER>
+<CENTER><P><B><FONT SIZE=+2>PgAccess can now design <A HREF="forms.html">Forms</A></FONT></B>,
+<B><FONT SIZE=+2><A HREF="pga-rad.html">Reports and Scripts</A></FONT></B>&nbsp;
+</P></CENTER>
 </TD>
 </TR>
 </TABLE></CENTER>
 
-<H3>
-<FONT COLOR="#000080">Installation problems</FONT></H3>
+<H3><FONT COLOR="#000080">Installation problems</FONT></H3>
 
 <UL>
-<LI>
-Some problems related with locale special characters could be solved by
-this <A HREF="specialchars.html">simple patch</A></LI>
+<LI>Some problems related with locale special characters could be solved
+by this <A HREF="specialchars.html">simple patch</A></LI>
 
-<LI>
-I think that there were some problems loading libpgtcl library. I invite
+<LI>I think that there were some problems loading libpgtcl library. I invite
 you to read a <A HREF="index.html#libpgtcl">special section concerning
 libpgtcl</A></LI>
+
+<LI>For Silicon Graphics Indigo computers, Irix operating system, there
+is a <A HREF="irix.html">HOWTO make PgAccess to work</A></LI>
 </UL>
 
-<H3>
-<FONT COLOR="#191970">What does PgAccess now!</FONT></H3>
-Here are some images from PgAccess windows : <A HREF="pic-pga-1.gif">Main
+<H3><FONT COLOR="#191970">What does PgAccess now!</FONT></H3>
+
+<P>Here are some screenshots from PgAccess windows : <A HREF="pic-pga-1.gif">Main
 window </A>, <A HREF="pic-pga-2.gif">table builder </A>, <A HREF="pic-pga-4.gif">table(query)
-view </A>, <A HREF="pic-pga-3.gif">visual query builder </A>.
-
-<P><B>Tables</B>
-<BR>- opening tables for viewing, max. 200 records (changed by preferences
-menu)
-<BR>- column resizing, dragging the vertical grid line (better in table
-space rather than in the table header)
-<BR>- text wrap in cells - layout saved for every table
-<BR>- import/export to external files (SDF,CSV)
-<BR>- filter capabilities (enter filter like (price>3.14)
-<BR>- sort order capabilities (enter manually the sort field(s))
-<BR>- editing in place
-<BR>- improved table generator assistant
-<BR>- improved field editing
-<BR><B>Queries</B>
-<BR>- define , edit and stores "user defined queries"
-<BR>- store queries as views
-<BR>- execution of queries
-<BR>- viewing of select type queries result
-<BR>- query deleting and renaming
-<BR>- visual query builder with drag &amp; drop capabilities. For any of
-you who had installed the Tcl/Tk plugin for Netscape Navigator, you can
-see it at work <A HREF="qbtclet.html">clicking here</A>
-<BR><B>Sequences</B>
-<BR>- defines sequences, delete them and inspect them
-<BR><B>Functions</B>
-<BR>- define, inspect and delete functions in SQL language
-<BR><B>Reports</B>
-<BR>- design and display simple reports from tables
-<BR>- fields and labels, font changing, style and size
-<BR>- saves and loads report description from database
-<BR>- show report previews, sample postscript output file
-<BR><B>Forms</B>
-<BR>- open user defined forms
-<BR>- form design module available
-<BR>- query widget available, controls bound to query results
-<BR>- <A HREF="forms.html">click here</A> for a description of forms and
-how they can be used
-<BR><B>Scripts</B>
-<BR>- define, modify and call user defined scripts
-<BR>Here is <A HREF="pga-rad.html">a special section concerning forms and
-scripts</A> .
-
-<P>On the TO-DO list!
-<BR>- table design (add new fields, renaming, etc.)
-
-<P>&nbsp;
+view </A>, <A HREF="pic-pga-3.gif">visual query builder </A>. </P>
+
+<P><B>Tables</B> <BR>
+- opening tables for viewing, max. 200 records (changed by preferences
+menu) <BR>
+- column resizing, dragging the vertical grid line (better in table space
+rather than in the table header) <BR>
+- text wrap in cells - layout saved for every table <BR>
+- import/export to external files (SDF,CSV) <BR>
+- filter capabilities (enter filter like (price&gt;3.14) <BR>
+- sort order capabilities (enter manually the sort field(s)) <BR>
+- editing in place <BR>
+- improved table generator assistant <BR>
+- improved field editing <BR>
+<B>Queries</B> <BR>
+- define , edit and stores &quot;user defined queries&quot; <BR>
+- store queries as views <BR>
+- execution of queries with optional user input parameters ( select * from
+invoices where year=[parameter &quot;Year of selection&quot;] )<BR>
+- viewing of select type queries result <BR>
+- query deleting and renaming <BR>
+- visual query builder with drag &amp; drop capabilities. For any of you
+who had installed the Tcl/Tk plugin for Netscape Navigator, you can see
+it at work <A HREF="qbtclet.html">clicking here</A> <BR>
+<B>Sequences</B> <BR>
+- defines sequences, delete them and inspect them <BR>
+<B>Functions</B> <BR>
+- define, inspect and delete functions in SQL language <BR>
+<B>Reports</B> <BR>
+- design and display simple reports from tables <BR>
+- fields and labels, font changing, style and size <BR>
+- saves and loads report description from database <BR>
+- show report previews, sample postscript output file <BR>
+<B>Forms</B> <BR>
+- open user defined forms <BR>
+- form design module available <BR>
+- query widget available, controls bound to query results <BR>
+- <A HREF="forms.html">click here</A> for a description of forms and how
+they can be used <BR>
+<B>Scripts</B> <BR>
+- define, modify and call user defined scripts <BR>
+Here is <A HREF="pga-rad.html">a special section concerning forms and scripts</A>
+. </P>
+
+<P>On the TO-DO list! <BR>
+- table design (add new fields, renaming, etc.) </P>
+
+<P>This program is protected by the following <A HREF="copyright.html">copyright</A>
+</P>
 
 <P>If you have any comment, suggestion for improvements, please feel free
-to e-mail to : <A HREF="mailto:teo@flex.ro">teo@flex.ro&nbsp;</A>
+to e-mail to : <A HREF="mailto:teo@flex.ro">teo@flex.ro&nbsp;</A> </P>
 
 <P><B><FONT COLOR="#FF1493"><FONT SIZE=+2>Mailing list for PgAccess </FONT></FONT></B><A HREF="maillist.html">Here
-you will find how to subscribe to this mailing list</A>.
+you will find how to subscribe to this mailing list</A>. </P>
 
 <P>
-<HR>
-<H1>
-More information about libpgtcl - downloads</H1>
-&nbsp;&nbsp;&nbsp;&nbsp; Also, you will need the PostgreSQL to Tcl interface
+<HR></P>
+
+<H1>More information about libpgtcl - downloads</H1>
+
+<P>&nbsp;&nbsp;&nbsp;&nbsp; Also, you will need the PostgreSQL to Tcl interface
 library, lined as a Tcl/Tk 'load'-able module. It is called libpgtcl and
 the source is located in the PostgreSQL directory /src/interfaces/libpgtcl.
 Specifically, you will need a libpgtcl library that is 'load'-able from
 Tcl/Tk.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is technically different from
 an ordinary PostgreSQL loadable object file, because libpgtcl is a collection
-of object files. Under Linux, this is called libpgtcl.so.
-<BR>&nbsp;&nbsp;&nbsp;&nbsp; You can download <B><A HREF="lib-pg63-redhat42.tar.gz">from
+of object files. Under Linux, this is called libpgtcl.so. <BR>
+&nbsp;&nbsp;&nbsp;&nbsp; You can download <B><A HREF="lib-pg63-redhat42.tar.gz">from
 here</A></B>&nbsp; libpgtcl.so and libpq.so compiled for PostgreSQL 6.3
 version running on a Linux RedHat 4.2 i386 systems. Just copy libpgtcl.so
 and libpq.so into your system library directory (/usr/lib or /lib) and
-go for it.
+go for it. </P>
 
 <P>&nbsp;&nbsp;&nbsp;&nbsp; One of the solutions is to remove from the
 source the line containing <B>load libpgtcl.so </B>and to load pgaccess.tcl
 not with wish, but with pgwish (or wishpg) that wish that was linked with
-libpgtcl library! I do not recommend this one.
+libpgtcl library! I do not recommend this one. </P>
 
 <P>&nbsp;&nbsp;&nbsp;&nbsp; If you have installed RedHat 5.0, you should
 get the last distribution kit of PostgreSQL and compile it from scratch.
 RedHat 5.0 is using some new versions of libraries and you have to compile
 and install again at least <B>libpq </B>and <B><TT>libpgtcl </TT></B>libraries.
+</P>
+
+<P>However, the application should work without problems! </P>
 
-<P>However, the application should work without problems!
 </BODY>
 </HTML>
diff --git a/src/bin/pgaccess/irix.html b/src/bin/pgaccess/irix.html
new file mode 100644 (file)
index 0000000..b678458
--- /dev/null
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+   <TITLE>PgAccess on Irix</TITLE>
+   <META NAME="GENERATOR" CONTENT="Mozilla/3.04Gold (X11; I; Linux 2.0.33 i586) [Netscape]">
+</HEAD>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#51188E" ALINK="#FF0000">
+
+<H1>INSTALLING PgAccess UNDER IRIX 5.3.
+<HR WIDTH="100%"></H1>
+
+<P><B><FONT COLOR="#000080">This HOWO-TO make PgAccess working under Irix
+is written by Stuart Rison</FONT></B></P>
+
+<P>These are the steps that I had to follow to get pgaccess to run on an
+INDIGO2 running postgreSQL 6.3.2 under IRIX 5.3. I make no guarantee whatsoever
+that the same step will work for others but at least it should point you
+in the right direction. Also, I am a biologist by training so I only got
+pgaccess working by fudging (that is, trial and error) this means that
+some of the steps may be unnecessary (e.g. compiling $postgreSQL_source/src/interfaces/libpgtcl
+as both a shared and static library) and they certainly haven't been optimised
+(I know nothing about compiler switches etc.).</P>
+
+<P><B>1) Requirements:</B></P>
+
+<UL>
+<P>You will need:</P>
+
+<UL>
+<LI>postgreSQL source (http://www.postgresql.org)</LI>
+
+<LI>tcl8.0 source (http://www.tclconsortium.org/)</LI>
+
+<LI>tk8.0 source (http://www.tclconsortium.org/)</LI>
+
+<LI>pgaccess source (http://www.flex.ro/pgaccess)</LI>
+</UL>
+</UL>
+
+<P><B>2) Installation:</B></P>
+
+<P>a) tcl/tk:</P>
+
+<UL>
+<P>You must first install tcl and then tk (in that order). I just used
+./configure, no switches and gmake. Their installation should be trouble
+free. Then you must move headers and libraries to the right places so:</P>
+
+<P>Header files: both tcl and tk have a header file (tcl.h and tk.h). The
+tcl.h file is in $tcl_source_dir/generic and the tk.h file is in $tk_source_dir/generic;
+both should be copied to /usr/local/include.</P>
+
+<P>Libraries: compilation (with cc) of tcl and tk yield libraries libtcl8.0.a
+and libtk8.0.a in $source_dir/unix. Both should be copied to /usr/local/lib.</P>
+</UL>
+
+<P>b) postgreSQL:</P>
+
+<UL>
+<P>Make sure you have a fully patched postgreSQL source. If your ./configure
+says it can't load 'IRIX' settings then you most probably will need to
+patch ./configure.</P>
+
+<P>Configure using ./configure with the following switches: ./configure
+--with-includes=/usr/local/include</P>
+
+<P>--with-libraries=/usr/local/lib --with-tcl [this and previous line as
+one]</P>
+
+<P>Then make, make install as usual</P>
+</UL>
+
+<P>c) Compiling libpgtcl:</P>
+
+<UL>
+<P>The source for libpgtcl is in $postgreSQL_directory/src/interfaces/libpgsql.</P>
+
+<P>I do this twice. Once with just gmake. This produces a static library
+libpgtcl.a which I leave where it is (I don't know what to do with it but
+it may just come in handy). The I modify Makefile manually with a text
+editor. Essentially I modify two line:</P>
+
+<P>before:</P>
+
+<P># Shared library stuff</P>
+
+<P>install-shlib-dep := shlib :=</P>
+
+<P>after:</P>
+
+<P># Shared library stuff</P>
+
+<P>install-shlib-dep := install-shlib shlib := libpgtcl.so.1</P>
+
+<P>Then gmake -f Makefile_modified. This creates two shared (.so) libraries:
+libpgtcl.so and libpgtcl.so.1. I can't tell the difference between them
+so I copied them both to /usr/lib/.</P>
+</UL>
+
+<P>d) running pgaccess:</P>
+
+<UL>
+<P>Uncompress pgaccess (usually with gunzip and tar). So long as 'wish'
+(a binary produced when compiling tk8.0) is somewhere in your path, you
+should be able to run pgaccess with:</P>
+
+<P>wish -f $pgaccess_dir/pgaccess.tcl [postgreSQL_database_name]</P>
+</UL>
+
+<P>e) et voila!</P>
+
+<P><B>3) Concluding remarks:</B></P>
+
+<UL>
+<P>As I stated at the start of this document, following the procedure indicated
+above worked for me. I am sure, however, that a few of the steps are unnecessary/non-optimised/stupid
+etc. If any Unix (IRIX) boffin is reading this and you spot anything you
+would like to comment/correct etc. please e-mail me (stuart@ludwig.ucl.ac.uk).
+Also, if you just have questions and think I might help, please contact
+me at the same e-mail.</P>
+
+<P>Finally, I can accept no responsibility if these steps don't work for
+you or if it all goes horribly wrong and you 'damage' your computer trying
+them. Let common sense prevail!</P>
+</UL>
+
+<P>Good luck</P>
+
+<P>Stuart Rison LICR University College London London W1P 8BT<BR>
+<A HREF="mailto:stuart@ludwig.ucl.ac.uk">stuart@ludwig.ucl.ac.uk</A></P>
+
+</BODY>
+</HTML>
index 9bbc037..a21edd0 100644 (file)
@@ -106,7 +106,7 @@ set temp {}
 switch $activetab {
        Tables {
                if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete table:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
-                       sql_exec noquiet "drop table $objtodelete"
+                       sql_exec noquiet "drop table \"$objtodelete\""
                        sql_exec quiet "delete from pga_layout where tablename='$objtodelete'"
                        cmd_Tables
                }
@@ -1193,7 +1193,7 @@ if {$mw(row_edited)==$mw(last_rownum)} {
     set msg "Updating record ..."
     after 1000 {set msg ""}
     regsub -all ' $fldval  \\' sqlfldval
-    set retval [sql_exec noquiet "update $tablename set $fld='$sqlfldval' where oid=$oid"]
+    set retval [sql_exec noquiet "update \"$tablename\" set $fld='$sqlfldval' where oid=$oid"]
 }
 cursor_arrow .mw
 if {!$retval} {
@@ -1267,7 +1267,7 @@ if {$mw(newrec_fields)==""} {return 1}
 set msg "Saving new record ..."
 after 1000 {set msg ""}
 set retval [catch {
-       set sqlcmd "insert into $tablename ([join $mw(newrec_fields) ,]) values ([join $mw(newrec_values) ,])"
+       set sqlcmd "insert into \"$tablename\" ([join $mw(newrec_fields) ,]) values ([join $mw(newrec_values) ,])"
        set pgres [pg_exec $dbc $sqlcmd]
        } errmsg]
 if {$retval} {
@@ -1596,13 +1596,13 @@ if {$how=="design"} {
     .qb.text1 insert end $qcmd
 } else {
     if {$qtype=="S"} then {
+        set mw(query) [subst $qcmd]
+        set mw(updatable) 0
+        set mw(isaquery) 1
         Window show .mw
                wm title .mw "Query result: $queryname"
         mw_load_layout $queryname
-        set mw(query) $qcmd
-        set mw(updatable) 0
-        set mw(isaquery) 1
-        mw_select_records $qcmd
+        mw_select_records $mw(query)
     } else {
         set answ [tk_messageBox -title Warning -type yesno -message "This query is an action query!\n\n[string range $qcmd 0 30] ...\n\nDo you want to execute it?"]
         if {$answ} {
@@ -1646,7 +1646,7 @@ set filter {}
 Window show .mw
 set tablename $objname
 mw_load_layout $objname
-set mw(query) "select oid,$tablename.* from $objname"
+set mw(query) "select oid,\"$tablename\".* from \"$objname\""
 set mw(updatable) 1
 set mw(isaquery) 0
 mw_select_records $mw(query)
@@ -1665,6 +1665,23 @@ mw_load_layout $vn
 mw_select_records $mw(query)
 }
 
+proc {parameter} {msg} {
+global gpw
+Window show .gpw
+focus .gpw.e1
+set gpw(var) ""
+set gpw(flag) 0
+set gpw(msg) $msg
+bind .gpw <Destroy> "set gpw(flag) 1"
+grab .gpw
+tkwait variable gpw(flag)
+if {$gpw(result)} {
+    return $gpw(var)
+} else {
+    return ""
+}
+}
+
 proc {ql_add_new_table} {} {
 global qlvar dbc
 
@@ -1704,7 +1721,7 @@ set tables {}
 for {set i 0} {$i<$qlvar(ntables)} {incr i} {
     set thename {}
     catch {set thename $qlvar(tablename$i)}
-    if {$thename!=""} {lappend tables "$qlvar(tablename$i) $qlvar(tablealias$i)"}
+    if {$thename!=""} {lappend tables "\"$qlvar(tablename$i)\" $qlvar(tablealias$i)"}
 }
 set sqlcmd "$sqlcmd from [join $tables ,] "
 set sup1 {}
@@ -1767,10 +1784,10 @@ if {[ql_get_tag_info $obj res]=="f"} {
 # Is object a table ?
 set tablealias [ql_get_tag_info $obj tab]
 set tablename $qlvar(ali_$tablealias)
-if {$tablename==""} return
+if {"$tablename"==""} return
 if {[tk_messageBox -title WARNING -icon question -message "Remove table $tablename from query ?" -type yesno -default no]=="no"} return
 for {set i [expr [llength $qlvar(restables)]-1]} {$i>=0} {incr i -1} {
-    if {$tablename==[lindex $qlvar(restables) $i]} {
+    if {"$tablename"==[lindex $qlvar(restables) $i]} {
        set qlvar(resfields) [lreplace $qlvar(resfields) $i $i]
        set qlvar(restables) [lreplace $qlvar(restables) $i $i]
        set qlvar(rescriteria) [lreplace $qlvar(rescriteria) $i $i]
@@ -2004,7 +2021,7 @@ set allbox [.ql.c bbox rect]
 if {$allbox==""} {set posx 10} else {set posx [expr 20+[lindex $allbox 2]]}
 set tablename $qlvar(tablename$it)
 set tablealias $qlvar(tablealias$it)
-.ql.c create text $posx $posy -text $tablename -anchor nw -tags [subst {tab$tablealias f-oid mov tableheader}] -font -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-*
+.ql.c create text $posx $posy -text "$tablename" -anchor nw -tags [subst {tab$tablealias f-oid mov tableheader}] -font -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-*
 incr posy 16
 foreach fld $qlvar(tablestruct$it) {
    .ql.c create text $posx $posy -text $fld -fill #010101 -anchor nw -tags [subst {f-$fld tab$tablealias mov}] -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
@@ -2382,7 +2399,7 @@ incr py [expr $rbvar(y_pghdr)-$rbvar(y_rpthdr)]
 set di [lsearch $rbvar(regions) detail]
 set y_hi $rbvar(y_detail)
 set y_lo $rbvar(y_[lindex $rbvar(regions) [expr $di-1]])
-pg_select $dbc "select * from $rbvar(tablename)" rec {
+pg_select $dbc "select * from \"$rbvar(tablename)\"" rec {
     foreach {field x y objid objtype} $fields {
         if {($y>=$y_lo) && ($y<=$y_hi)} then {
         if {$objtype=="t_f"} {
@@ -2406,7 +2423,7 @@ tk_messageBox -title Information -message "The printed image in Postscript is in
 
 proc {rb_save_report} {} {
 global rbvar
-set prog "set rbvar(tablename) $rbvar(tablename)"
+set prog "set rbvar(tablename) \"$rbvar(tablename)\""
 foreach region $rbvar(regions) {
     set prog "$prog ; set rbvar(y_$region) $rbvar(y_$region)"
 }
@@ -2652,7 +2669,7 @@ proc vTclWindow.about {base} {
     label $base.l2  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief groove  -text {A Tcl/Tk interface to
 PostgreSQL
 by Constantin Teodorescu} 
-    label $base.l3  -borderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief sunken -text {vers 0.88}
+    label $base.l3  -borderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief sunken -text {vers 0.90}
     label $base.l4  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief groove  -text {You will always get the latest version at:
 http://www.flex.ro/pgaccess
 
@@ -3261,7 +3278,7 @@ proc vTclWindow.nt {base} {
     show_error "Your table has no fields!"
     focus .nt.e2
 } else {
-    set temp "create table $newtablename ([join [.nt.lb get 0 end] ,])"
+    set temp "create table \"$newtablename\" ([join [.nt.lb get 0 end] ,])"
     if {$fathername!=""} then {set temp "$temp inherits ($fathername)"}
     cursor_watch .nt
     set retval [catch {
@@ -3539,13 +3556,13 @@ if {[lindex [split [string toupper $qcmd]] 0]!="SELECT"} {
                sql_exec noquiet $qcmd
        }
 } else {
+       set mw(query) [subst $qcmd]
+       set mw(updatable) 0
+       set mw(isaquery) 1
        Window show .mw
        set mw(layout_name) $queryname
        mw_load_layout $queryname
-       set mw(query) $qcmd
-       set mw(updatable) 0
-       set mw(isaquery) 1
-       mw_select_records $qcmd
+       mw_select_records $mw(query)
 }
 }  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Execute query} 
     button $base.termbtn  -borderwidth 1  -command {.qb.cbv configure -state normal
@@ -3612,14 +3629,15 @@ Window destroy .ql}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -p
     bind $base.entt <Key-Return> {
         ql_add_new_table
     }
-    button $base.execbtn  -borderwidth 1  -command {Window show .mw
+    button $base.execbtn  -borderwidth 1  -command {
 set qcmd [ql_compute_sql]
 set mw(layout_name) nolayoutneeded
-mw_load_layout $mw(layout_name)
-set mw(query) $qcmd
+set mw(query) [subst $qcmd]
 set mw(updatable) 0
 set mw(isaquery) 1
-mw_select_records $qcmd}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Execute SQL} 
+Window show .mw
+mw_load_layout $mw(layout_name)
+mw_select_records $mw(query)}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Execute SQL} 
     button $base.stoqb  -borderwidth 1  -command {Window show .qb
 .qb.text1 delete 1.0 end
 .qb.text1 insert end [ql_compute_sql]
@@ -3675,7 +3693,7 @@ proc vTclWindow.rf {base} {
                        if {$newobjname==""} {
                                show_error "You must give object a new name!"
                        } elseif {$activetab=="Tables"} {
-                               set retval [sql_exec noquiet "alter table $oldobjname rename to $newobjname"]
+                               set retval [sql_exec noquiet "alter table \"$oldobjname\" rename to \"$newobjname\""]
                                if {$retval} {
                                        sql_exec quiet "update pga_layout set tablename='$newobjname' where tablename='$oldobjname'"
                                        cmd_Tables
@@ -4520,6 +4538,65 @@ catch {Window destroy .$fdvar(forminame)}
         -x 175 -y 25 -width 60 -height 17 -anchor nw -bordermode ignore 
 }
 
+proc vTclWindow.gpw {base} {
+    if {$base == ""} {
+        set base .gpw
+    }
+    if {[winfo exists $base]} {
+        wm deiconify $base; return
+    }
+    ###################
+    # CREATING WIDGETS
+    ###################
+    toplevel $base -class Toplevel
+    wm focusmodel $base passive
+    set sw [winfo screenwidth .]
+    set sh [winfo screenheight .]
+    set x [expr ($sw - 297)/2]
+    set y [expr ($sh - 98)/2]
+    wm geometry $base 297x98+$x+$y
+    wm maxsize $base 1009 738
+    wm minsize $base 1 1
+    wm overrideredirect $base 0
+    wm resizable $base 0 0
+    wm deiconify $base
+    wm title $base "Input parameter"
+    label $base.l1 \
+        -anchor nw -borderwidth 1 \
+        -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
+        -justify left -relief sunken -textvariable gpw(msg) -wraplength 200 
+    entry $base.e1 \
+        -background #fefefe -borderwidth 1 -highlightthickness 0 \
+        -textvariable gpw(var) 
+    bind $base.e1 <Key-KP_Enter> {
+        set gpw(result) 1
+destroy .gpw
+    }
+    bind $base.e1 <Key-Return> {
+        set gpw(result) 1
+destroy .gpw
+    }
+    button $base.bok \
+        -borderwidth 1 -command {set gpw(result) 1
+destroy .gpw} -padx 9 \
+        -pady 3 -text Ok 
+    button $base.bcanc \
+        -borderwidth 1 -command {set gpw(result) 0
+destroy .gpw} -padx 9 \
+        -pady 3 -text Cancel 
+    ###################
+    # SETTING GEOMETRY
+    ###################
+    place $base.l1 \
+        -x 10 -y 5 -width 201 -height 53 -anchor nw -bordermode ignore 
+    place $base.e1 \
+        -x 10 -y 65 -width 200 -height 24 -anchor nw -bordermode ignore 
+    place $base.bok \
+        -x 225 -y 5 -width 61 -height 26 -anchor nw -bordermode ignore 
+    place $base.bcanc \
+        -x 225 -y 35 -width 61 -height 26 -anchor nw -bordermode ignore 
+}
+
 proc vTclWindow.fdtb {base} {
     if {$base == ""} {
         set base .fdtb