Hi John.

Platform: Win
Python Version: 2.4.4 on win32
Dabo Version: Version 0.8a; Revision
UI Version: 2.6.3.3 on wxMSW

I don't think I'm being dense. I took a couple days off to clear my head 
and came back to this. Below is my code and the form .cdxml file, which 
still don't work as I expect, with comments.

To summarize:

I can make a grid work just like it does in the Wiki How-To for populating 
a grid. That strongly suggests to me that I'm doing everything right with 
regard to setting up the database in MySQL, creating a connection in Dabo, 
and accessing the proper biz object, DataSource, and fields.

So then, insofar as possible, I use the exact same database, table, and 
Dabo code to bind a textbox to a single field in in my table and populate 
it by requesting 1 record, and it doesn't work. Instead, the GRID shows the 
one row I want, and the textbox shows nothing. If I get rid of the grid and 
just do the textbox thing with everything else the same, it doesn't do 
anything at all.

As best I can tell, it should work. Please try to show me the exact point 
where I'm wrong.

Thanks.

Ken Dibble
www.stic-cil.org

## *!* ## Dabo Code ID: dButton-dForm
def onHit(self, evt):
         # Code from the wiki How-To:
         # This connection works fine, as the rest of this code
         # demonstrates.
         
self.Form.Application.addConnectFile("C:\DaboProjects\MyMusic\mymusic.cnxml")

         # Code from the wiki How-To:
         conn = self.Form.Application.getConnectionByName("main")

         # Code from the wiki How-To:
         biz = dabo.biz.dBizobj(conn)

         # Code from the wiki How-To:
         # These items are correct, as the grid will demonstrate.
         biz.DataSource = "musSongs"
         biz.KeyField = "pkid"

         # Code from the wiki How-To (don't know why; it doesn't
         # seem to serve any purpose, like giving me a form-level
         # reference to the biz object that I can use, but if
         # I comment it out, the grid doesn't populate):
         # Add it to the form's collection of bizobj references
         self.Form.addBizobj(biz)

         # Code from the wiki How-To:
         # These items are correct, as the grid will demonstrate.
         # Now set up the fields
         biz.addField("pkid")
         biz.addField("songname")
         biz.addField("compdate")

         # Code from the wiki How-To:
         # Run the query
         biz.requery()

         # Code from the wiki How-To (works perfectly; if I
         # don't enter a number in the keyBox textbox, all of my
         # songs appear in the grid. This indicates that:
         #   1. The MySQL database is configured properly for
         #      Dabo.
         #   2. The connection is configured properly in Dabo.
         #   3. I'm referring to the proper fields and DataSource.
         #   4. There is data in the table.)
         # The grid may not exist yet; it may be created after
         # this method is run. So use 'callAfter()' to delay
         # populating the grid until we know it is ready.
         dabo.ui.callAfter(self.Form.populateGrid)

         # Now try to show just one song in the thisSong textbox,
         # assuming the user entered a number in the keyBox. If
         # s/he didn't, the following code doesn't do anything
         # that I can see.
         myPK = self.Form.keyBox.Value

         # Assuming I put 3 in the keyBox,Prints 3, as I'd expect.
         print myPK

         biz.setWhereClause("musSongs.pkid = " + myPK)

         # Assuming I put 3 in the keyBox, this prints
         # "musSongs.pkid = 3", also as I'd suspect.
         # This tells me that the query is going to be correct.
         print biz._CurrentCursor.sqlManager._whereClause

         biz.requery()

         # At this point, the grid shows one row--the row I
         # wanted--but the thisSong texbox shows nothing.
         dabo.ui.callAfter(self.Form.showSong)

## *!* ## Dabo Code ID: dForm-top
def afterInit(self):
         # Even though I do this again in the button's onHit,
         # I do it here because the form will not run if there's
         # no code in this method.
         
self.Application.addConnectFile("C:\DaboProjects\MyMusic\mymusic.cnxml")

def populateGrid(self):
         # Just like in the Wiki How-To:
         self.gridKen.DataSource = "musSongs"

def showSong(self):
         # Just like in the Wiki How-To except it's a dTextBox
         # instead of a dGrid.
         self.Form.thisSong.DataSource = "musSongs"

Here's the .cdxml file for the form:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<dForm code-ID="dForm-top" Caption="Songs" Top="90" Height="547" 
Width="682" designerClass="DesForm" UseSizers="True" Left="262">
         <dSizer SlotCount="4" designerClass="LayoutSizer" 
Orientation="Vertical">
                 <dGrid ColumnCount="3" RegID="gridKen" 
SelectionMode="Cell" designerClass="controlMix" sizerInfo="{'BorderSides': 
['All'], 'Proportion': 1, 'HAlign': 'Left', 'VAlign': 'Top', 'Border': 0, 
'Expand': True}">
                         <dColumn HeaderFontItalic="False" 
FontUnderline="False" Width="150" FontFace="Arial" HeaderBackColor="None" 
FontBold="False" HeaderVerticalAlignment="None" Editable="False" 
HeaderFontBold="True" ListEditorChoices="[]" FontItalic="False" 
Expand="False" HeaderFontSize="9" Sortable="True" HeaderFontFace="Arial" 
Caption="ID" designerClass="controlMix" Order="0" FontSize="9" 
HeaderForeColor="None" Searchable="True" HeaderFontUnderline="False" 
HeaderHorizontalAlignment="None" HorizontalAlignment="Left (Automatic)" 
DataField="pkid" VerticalAlignment="Top"></dColumn>
                         <dColumn HeaderFontItalic="False" 
FontUnderline="False" Width="150" FontFace="Arial" HeaderBackColor="None" 
FontBold="False" HeaderVerticalAlignment="None" Editable="False" 
HeaderFontBold="True" ListEditorChoices="[]" FontItalic="False" 
Expand="False" HeaderFontSize="9" Sortable="True" HeaderFontFace="Arial" 
Caption="Song" designerClass="controlMix" Order="10" FontSize="9" 
HeaderForeColor="None" Searchable="True" HeaderFontUnderline="False" 
HeaderHorizontalAlignment="None" HorizontalAlignment="Left (Automatic)" 
DataField="songname" VerticalAlignment="Top"></dColumn>
                         <dColumn HeaderFontItalic="False" 
FontUnderline="False" Width="150" FontFace="Arial" HeaderBackColor="None" 
FontBold="False" HeaderVerticalAlignment="None" Editable="False" 
HeaderFontBold="True" ListEditorChoices="[]" FontItalic="False" 
Expand="False" HeaderFontSize="9" Sortable="True" HeaderFontFace="Arial" 
Caption="Date" designerClass="controlMix" Order="20" FontSize="9" 
HeaderForeColor="None" Searchable="True" HeaderFontUnderline="False" 
HeaderHorizontalAlignment="None" HorizontalAlignment="Left (Automatic)" 
DataField="compdate" VerticalAlignment="Top"></dColumn>
                 </dGrid>
                 <dTextBox RegID="keyBox" sizerInfo="{'BorderSides': 
['All'], 'Proportion': 0, 'HAlign': 'Left', 'VAlign': 'Top', 'Border': 3, 
'Expand': False}" designerClass="controlMix"></dTextBox>
                 <dButton code-ID="dButton-dForm" Caption="Button" 
sizerInfo="{'BorderSides': ['All'], 'Proportion': 0, 'HAlign': 'Left', 
'VAlign': 'Middle', 'Border': 4, 'Expand': False}" 
designerClass="controlMix"></dButton>
                 <dTextBox RegID="thisSong" sizerInfo="{'BorderSides': 
['All'], 'Proportion': 0, 'HAlign': 'Left', 'VAlign': 'Top', 'Border': 3, 
'Expand': False}" designerClass="controlMix" Name="dTextBox1"></dTextBox>
         </dSizer>
</dForm>



-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 268.18.5/706 - Release Date: 2/28/2007 4:09 
PM



_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users

Reply via email to