using tcl/tk and sqlite

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

using tcl/tk and sqlite

Peter Berkel
Hallo,

I am not an expert in programming and I try make a frontend
for sqlite using tcl/tk. See example code below.

I have the following problem. I try to entry data which I want to insert in a sqlite database. The Values of the textvariables a b and c in the entry widget are set in the insert statement.

What do I wrong and how can I solve the problem so that I can use the entry widget to insert, modify and delete dat from a sqlite database.

Thanks for helping me out.

Peter Berkel


load tclsqlite3 sqlite3
  sqlite3 db test.db
  db eval {
    CREATE TABLE t1(a,b,c);
    }
 
set a  0
set b  0
set c  0


entry .entry1 -width 20 -textvariable a
entry .entry2 -width 20 -textvariable b
entry .entry3 -width 20 -textvariable c


db eval {insert into t1 values ($a,$b,$c)}

button .button1 -text "execute"

pack .entry1 .entry2 .entry3 .button1

db close
Reply | Threaded
Open this post in threaded view
|

Re: using tcl/tk and sqlite

D. Richard Hipp
See my comments below.

On Mon, 2005-08-01 at 21:06 +0200, Peter Berkel wrote:

> Hallo,
>
> I am not an expert in programming and I try make a frontend
> for sqlite using tcl/tk. See example code below.
>
> I have the following problem. I try to entry data which I want to insert in a sqlite database. The Values of the textvariables a b and c in the entry widget are set in the insert statement.
>
> What do I wrong and how can I solve the problem so that I can use the entry widget to insert, modify and delete dat from a sqlite database.
>
> Thanks for helping me out.
>
> Peter Berkel
>
>
> load tclsqlite3 sqlite3
>   sqlite3 db test.db
>   db eval {
>     CREATE TABLE t1(a,b,c);
>     }
>  
> set a  0
> set b  0
> set c  0
>
>
> entry .entry1 -width 20 -textvariable a
> entry .entry2 -width 20 -textvariable b
> entry .entry3 -width 20 -textvariable c
>
>
> db eval {insert into t1 values ($a,$b,$c)}

The statement above does the insert, but it does
so immediately, not in response to the button
press.  To run this command in response to the
button pressed, do this:

button .button1 -text execute -commmand {
   db eval {insert into t1 values($a,$b,$c)}
}

>
> button .button1 -text "execute"
>
> pack .entry1 .entry2 .entry3 .button1
>
> db close

Reply | Threaded
Open this post in threaded view
|

Re: using tcl/tk and sqlite

shamil_daghestani
In reply to this post by Peter Berkel
In addition to what D.R. Hipp said, you are also creating and closing your
db before you get the chance to enter any data, what you really need is to
create a procedure to (1) open db (2) enter data and (3) close db every
time the "execute" button is pressed.  Below is a complete working example
of what you want to do.  Notice when you use the entry widget you don't
have to worry about using any types of quotes or slashes.

#--------------------- create your DB ---------------------
load c:/tcla/lib/sqlite/tclsqlite3 sqlite3

  sqlite3 db c:/test.sql
  db eval {
    CREATE TABLE t1(a,b,c);
    }

set a  0
set b  0
set c  0

#---- fire up this proc when the execute button is hit -----
proc updateDB {a b c} {
sqlite3 db c:/test.sql                         ;# open db
db eval {insert into t1 values ($a,$b,$c)}     ;# enter data
db close                                       ;# close db
}

#----------- create & pack your buttons in tcl --------------
entry .entry1 -width 20 -textvariable a
entry .entry2 -width 20 -textvariable b
entry .entry3 -width 20 -textvariable c
button .button1 -text "execute" -command {updateDB $a $b $c}
pack .entry1 .entry2 .entry3 .button1
#----------------------- the end --------------------------






                                                                                                                         
                      "D. Richard Hipp"                                                                                  
                      <[hidden email]>          To:       [hidden email]                                          
                                               cc:                                                                        
                      08/01/2005 03:30         Subject:  Re: [sqlite] using tcl/tk and sqlite                            
                      PM                                                                                                  
                      Please respond to                                                                                  
                      sqlite-users                                                                                        
                                                                                                                         
                                                                                                                         




See my comments below.

On Mon, 2005-08-01 at 21:06 +0200, Peter Berkel wrote:
> Hallo,
>
> I am not an expert in programming and I try make a frontend
> for sqlite using tcl/tk. See example code below.
>
> I have the following problem. I try to entry data which I want to insert
in a sqlite database. The Values of the textvariables a b and c in the
entry widget are set in the insert statement.
>
> What do I wrong and how can I solve the problem so that I can use the
entry widget to insert, modify and delete dat from a sqlite database.

>
> Thanks for helping me out.
>
> Peter Berkel
>
>
> load tclsqlite3 sqlite3
>   sqlite3 db test.db
>   db eval {
>     CREATE TABLE t1(a,b,c);
>     }
>
> set a  0
> set b  0
> set c  0
>
>
> entry .entry1 -width 20 -textvariable a
> entry .entry2 -width 20 -textvariable b
> entry .entry3 -width 20 -textvariable c
>
>
> db eval {insert into t1 values ($a,$b,$c)}

The statement above does the insert, but it does
so immediately, not in response to the button
press.  To run this command in response to the
button pressed, do this:

button .button1 -text execute -commmand {
   db eval {insert into t1 values($a,$b,$c)}
}

>
> button .button1 -text "execute"
>
> pack .entry1 .entry2 .entry3 .button1
>
> db close






The information transmitted is intended only for the person(s)or entity
to which it is addressed and may contain confidential and/or legally
privileged material. Delivery of this message to any person other than
the intended recipient(s) is not intended in any way to waive privilege
or confidentiality. Any review, retransmission, dissemination or other
use of, or taking of any action in reliance upon, this information by
entities other than the intended recipient is prohibited. If you
receive this in error, please contact the sender and delete the
material from any computer.

For Translation:

http://www.baxter.com/email_disclaimer