Search Postgresql Archives

Postgresql and small office p2p networks & ODBC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have made some good progress today since your help in makeing VB talk to Postgresql through ODBC.
 
My application will run on a small p2p network of 5 Dell computers, one of which is a server for Postgresql.  The other workstations can access the server through ODBC.
 
The owner, who is age 76, is constantly getting phone calls all day long, sometimes 3 at once.  At his desk will be a workstation running this code (once I soup it up and test it).
 
The window minimizes and goes into a look, selecting the "calls" table for calls where "processed" is zero.  As soon as it finds one or more, it maximizes the form window and beeps.  It will display which Line (there are 5 lines) the call is on, the name and the phone number.  I set a default for datetime stamp and date (I am just starting to learn about such things.)
 
The boss may or may not get into the habit of clicking on which calls are taken. So I am planning on making the code go into a wait loop for two minutes, and then minimize, and mark the calls processed = 1, and go back to polling the file for more calls.
 
The obstacles I faced in doin all this were several: 
 
First, I had to decide on a SQL engine. I was very familiar with php and Mysql from a website I worked on, as a hobby.  But somehow, I heard that Postgresql was more powerful and a better choice. (I cant honestly remember how I arrived at that impression).
 
My next obstacle was to fine out exactly where there was a Windows install download, which was not easy, and when I found the page, to understand which download to choose, and then to decide how to install, as a windows process (which scared me because I thought it might permanently change my machine).  So I stayed up til 3 am playing unsuccessfully with the install, until the next day, I received advice from this group that the windows process was the only route to take (since I am not in a position to do initdb myself) and that it would not harm my computer, and that the uninstall would remove everything fine, should I feel the need to do that.
 
Another hurdle was for me to understand how to install it at work, and get the other workstations to communicate with it through IP addresses.  It would not work at all until I realized that the XP fire wall was blocking it. Once I turned that off, it worked like a charm.
 
Then, I needed to find a way to write a script or program which would do what this VB program is doing.  Again the group here helped direct me to a link with a very clear example of code.  I had to get used to Visual Basic, and realize that nothing would work for me until I added a data environment to the project, choosing ODBC, and then configure the Postgresql ODBC (which I had to find and download and install).   I knew that I could do what I want in MSACCESS which I have at home on my Dell, but we could not afford to buy it at work (we use Star Office for $80).
 
But I purchased a copy of VB 6.0 several years ago, and played with it a little. So that was my cheapest alternative.
 
There were certain things about VB that really confused me. Like, once I saved a project, I could not figure out how to open it again and redisplay it. There are some odd buttons one must click to make that happen.  The big advantage to VB is that there are so many books (I had purchased several back when I purchased VB.
 
We use Act! Contact management all the time at work to manage all the phone call contacts and correspondence.  There are things about Act! that I do not like. And the Act company never seems to offer any upgrades. I think the real deal is that they want you to spend lots of money to get the functionality you really need.  But since people can put Postgresql on a simple p2p network for FREE, why, in the 1980s, the company I was at had to spend a lot of money for a novell network, and a database manager program.
 
Anyway, if I can get this project to work, why then I can keep adding to it until it is a full fledged Contact Management system.
 
Thanks everyone for your help!  I hope that if I document some of my learning experiences it may help other beginners, and folks who need software but cannot afford to pay a lot of money.
 
I spent a lot of time with the Liberty Basic people, and the ease of use of Liberty Basic rekindled my desire to do all these things. But I realized that I would be foolish to spend lots of time developing applications that use anything other than SQL (I mean like random fixed lenght files that Liberty Basic uses.)
 
I was thinking of trying to write in VB a program to poll a folder, looking for text files placed there by Liberty Basic programs. Those text files could have SQL commands to pass through to Postgresql. Then, the VB program could output the results of the pass through SQL command to some other ascii file, and the Liberty Basic appication could be waiting and polling for that file, and scoop up the info, and continue with its processing.  This would be a very simple but effective way to let Liberty Basic folks use Postgresql.  I know that Liberty Basic compiler is written in Smalltalk, and I know there are versions of Smalltalk that have drivers for Postgresql.  So, perhaps one day, Liberty Basic will have some way to talk directly with Postgres.
 
 
Here is the table I defined in Postgresql
 
displayed, line, company, firstname, lastname, areacode, phone3, phone4, extension, date, timestamp, time
 

CREATE SEQUENCE "id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1 ;
CREATE TABLE "calls" (
   "id"            int4 NOT NULL DEFAULT NEXTVAL('id_seq'),
   "displayed"     numeric(1) NULL,
   "phoneline"          varchar(10) NULL,
   "company"       varchar(50) NULL,
   "firstname"     varchar(40) NULL,
   "lastname"      varchar(40) NULL,
   "areacode"      varchar(3) NULL,
   "phone3"         varchar(3) NULL,
   "phone4"         varchar(4) NULL,
   "extension"     varchar(10) NULL,
   "date"          date NULL,
   "timestamp"     timestamp NULL,
 PRIMARY KEY ("id")
);
COMMENT ON TABLE "calls" IS 'Phone calls awaiting answer';
 
ALTER TABLE calls ALTER date SET DEFAULT now();  
ALTER TABLE calls ALTER timestamp SET DEFAULT now();  
 
=========================================
And here is the Visual Basic code
 
===========================start of code
Private Sub Command1_Click()
Secretary.WindowState = 1
Secretary.Hide
finished = False
 
While Not finished
 Dim cn As New ADODB.Connection
 Dim rs As New ADODB.Recordset
 
 cn.Open "DSN=PostgreSQL;" & _
          "UID=neil;" & _
          "PWD=password;" & _
          "Database=bpsimple"
 
 rs.Open "SELECT id, displayed, phoneline, company, firstname, lastname, areacode, phone3, phone4, extension FROM calls where displayed = 0", cn, adOpenDynamic
 rowcount = 0
 While Not rs.EOF
    rowcount = rowcount + 1
    ' Debug.Print rs!fname & ": " & rs!lname
    'displayed, company, firstname, lastname, areacode, phone3, phone4, extension, date, timestamp, time
Beep
    Printline = Str$(rs!id) & ", " & rs!phoneline & ", " & rs!company & ", " & rs!firstname & ", " & rs!lastname & ", " & rs!areacode & "-" & rs!phone3 & "-" & rs!phone4 & "   ext. " & rs!extension
    Text2.Text = Text2.Text & Chr$(13) & Chr$(10) & Printline
    rs.MoveNext
 Wend
 If rs.State <> adStateClosed Then rs.Close
 Set rs = Nothing
 If cn.State <> adStateClosed Then cn.Close
 Set cn = Nothing
 
 If rowcount > 0 Then
  finished = True
 End If
 For wcount = 1 To 100000000
 Next wcount
 
' Debug.Print Str$(waitcounter)
Wend
 
Secretary.Show
Secretary.WindowState = 2
 

MsgBox "rowcount = " & Str$(rowcount)
 
 
 
'Text2.Text = Text2.Text & Chr$(13) & Chr$(10) & Text1.Text
 

End Sub
===========================end of code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux