QUESTION How do I format the string returned from rowsAsStrings from the database result table to get rid of the brackets and other funny characters? ANSWER If you would like to display just one column of the database table in the visual part (list box, combo box, etc.), then you can specify an attribute name in the settings for that visual part that is the same as the name of one of the columns in your database table. Then, connect the resultTable(rows) to the visual part(items). The rowsAsStrings message puts the brackets around each column in the result row. The way to get around it is to pick out the data you want using an expression like: name := row at: #COLNAME (Can do this if using Smalltalk and not VisualAge) If you would like to display more than just one column of the database table, you can use the following examples as reference. The Multimedia User's Guide and Reference, in the Insurance Sample application, shows you how to write an attribute-to-script connection that formats the rows into nicer looking strings. This is the example in that manual: Be aware that the '›' symbol corresponds to a carat (return) symbol. formatNameList "Formats the names in the result table of the query as Lastname, Firstname, Middlename." | list oldList aString table | list := OrderedCollection new. table := (self subpartAttributeValue: #(#NameTable self)). table isNil ifTrue: [^list]. oldList := table rows. (oldList isNil) ifFalse: [ oldList do: [ :row | aString := ( ( row at: #LASTNAME), ', ', (row at: #FIRSTNAME) ', ', (row at: #MIDDLENAME) list add: aString] ]. ^list. The VisualAge version 2.0 User's Guide and Reference Manual has a section titled Displaying Rows as Strings. It also shows how to write an attribute to script connection that formats rows into nicer looking strings. This section is located on pages 195-197. Another alternative is you can add an attribute to the public interfac of a part. This attribute can have a get method that returns the columns in a displayable manner somewhat like the above examples. Then specify that attribute name in the settings for your non-visual part. This is another example that fills a container from a query that retrieves client names from a database: fillContainer "fills the container with client icons" ³ client cnr icon rows name id | icon := (AbtIconDescriptor new moduleName: 'MTBMP10'; id: 806; yourself). cnr := self partAttributeValue: #(#Container #self). rows := self partAttributeValue: #(#'resultTable of DatabaseQuery' #rows). rows do: [:row ³ name := ( (row at: #LASTNAME), ', ',(row at: #FIRSTNAME),' ', (row at: #MIDDLENAME) ). id := (row at: #ID). client := AbtIconGadgetView new. client parentView: cnr; label: name; largeIcon: icon; openWidget. client abtWhen: #defaultAction perform: (DirectedMessage new receiver: self; selector: #openClient:id:; arguments: (Array with: name with: id)). ]. cnr arrangeItems.