How To: FileMaker as a Dataprovider (Custom XML JDBC Driver)

Just keep in mind that this driver definitely doesn’t support all of the commands available in the SQL language. It is customized to work with Sevoy, and is faster than FileMaker’s JDBC driver, but does not support as many SQL statements.

Scott,
firstly, thanks for creating such a great tool!
Secondly, I have managed to create ‘DB servers’ for some FM files (including your IWPTest), but in the Prefs. panel, they have a different colour icon (just grey) to all of my other ones (green/blue?)[They are ‘enabled’]. Then when I go to the ‘Dataproviders’, they are not appearing!
What am I doing wrong?
(Servoy Developer
Version 3.1.3-build 407
Java version 1.5.0_07-87 (Mac OS X)
FileMaker Pro 6.0v4 Dev.
Works thru web browser & your other tests
db server url : jdbc:ddc://localhost:591/IWPTest;pk=id&fmversion=6
I am using a MacBook, so FM is running under Rosetta…)
Thanks,
Rafi

Go back into preferences, and uncheck, then recheck enabled for one of the FileMaker dataproviders. Click ok. You should see it in green. If not, check out the log in the Servoy Admin page and see if it shows any errors.

Thanks for the reply.
It was a combination of the ‘enabled’ flag and the URL

jdbc:ddc://localhost:591/?&fmversion=6;IWPTest;pk=id

seemed to fix things.
It works great! This will be really helpful to me as I am migrating a big FM system to Servoy and want to move some data over to Servoy, but one file will still be being updated in FM, so I want to be able to regularly find the new records and bring them in to Servoy.
Thanks,
Rafi

in regards to moving data between FileMaker & SQL db’s ( or really between any two db servers),

What might be the most efficient way to do this?
e.g. query FileMaker, save the dataset, then INSERT into the other db? with a looping method perhaps?

I’m hoping there might be an “elegant” solution to this!

(another post suggested making FileMaker a “proxy” table in Sybase instead, so the INSERT would then be a single SQL statement)

thanks,
greg

There are several ways to do a 1 time data transfer.

  1. Export out to csv and import into your SQL backend. Since FileMaker stores its data differently than a SQL database, there may be some manual modification of the data. Plus you’ll also have to manually create your schema in the SQL backend.

  2. There have been some postings on this forum about using Sybase proxy tables. I’m not very familiar with this, but maybe worth looking into.

  3. Use a tool at http://www.fmpromigrator.com/ . It has some limitations since it uses the ODBC driver, because FileMaker’s ODBC driver has several bugs. It also is not free.

  4. Us my tool at http://goldcougar83.googlepages.com/ called FM Escape. (I love that name). It will do 2 things for you. First, it will connect to your database and give you the schema for your table as a CREATE TABLE statement. Second, it will also give you INSERT INTO statements for your data. This is very much a beta product, but it is free to use. It relies on the JDBC driver that you are already using, just use the same connection string. You can also use the preferences area to have FM Escape customize the CREATE TABLE and INSERT INTO statements for your specific circumstances. It will also handle some of the weird ways FileMaker formats its data, and convert it for proper SQL format. More info at http://forum.servoy.com/viewtopic.php?t=7153

I just tried a query with Servoy 3.1.4, and WHERE doesn’t seem to work. Did something change, or break?

var server = ‘fmjdbc_test’;
var string = “SELECT serial_number FROM jdbc_test WHERE serial_number <=5”
var dataset = databaseManager.getDataSetByQuery( server, string, null, -1 );

returns a single record!

in FileMaker, modify last find shows only “5”, not “<=5”

I tried WHERE serial_number IN (1,2,3,4,5), but get error “Unknown search term operator -1”

However, if I try WHERE serial_number < ‘<=5’, it works!

I have created a new page at http://goldcougar83.googlepages.com/convert_filemaker_to_servoy which has additional resources/information for people needing to convert their Filemaker applications to Servoy.

Hi,
I’m trying to use your driver to send record updates FROM Servoy TO FM, but without success (some kind of ‘setObject not implemented yet’ error).
Showing data from FM is working, and I am using a relationship to existing FM records, just trying to change an existing value to match Servoy.
When I just use a normal form that is using just the FM fields on it, it displays fine & as I scroll thru, FM changes it’s found set, but if I then try and edit a field and click off to commit, the ‘e’ edit flag is still staying on, FM is not showing the correct record, and Servoy seems to have hung.
I am using the latest version of driver, have set a layout filter, have set FM web sharing all to use same filtered layout.
Please help someone, as I REALLY need to get this working.
Thanks,
Rafi

What type of datatype is it? (text, number, date)
What is the Servoy display type set to?( text field, text area, datetime)

text should be displayed in Servoy as TEXT_FIELD
number, date, datetime should be displayed in Servoy as TEXT_AREA

goldcougar:
What type of datatype is it? (text, number, date)
What is the Servoy display type set to?( text field, text area, datetime)

text should be displayed in Servoy as TEXT_FIELD
number, date, datetime should be displayed in Servoy as TEXT_AREA

It’s a text field in FM.
Servoy type is Text, displayed as TEXT_FIELD (default)

Thanks.

in case it helps, here is db url

jdbc:ddc://128.1.1.124:591/?&fmversion=6;ABRSM%20address%20book;pk=pkey;layFilter=servoy_ab

then it should be working. I haven’t seen that problem before. Can you send a sample solution with sample data, and the FMP database, and I’ll look at it when I get a chance. email to sbutler@servoy.com

Hi

goldcougar:
then it should be working. I haven’t seen that problem before. Can you send a sample solution with sample data, and the FMP database, and I’ll look at it when I get a chance. email to sbutler@servoy.com

Thanks, but I’m not sure if I can do that as it is my clients data…

If it helps, here is some stuff from the Servoy Log file

2007-06-13 17:18:53,890 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.dataui.DataRenderer$1.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:19:56,273 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.dataui.DataRenderer$1.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:19:59,942 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.FormController.valueChanged(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.q.stateChanged(Unknown Source)
	at javax.swing.JSlider.fireStateChanged(Unknown Source)
	at javax.swing.JSlider$ModelListener.stateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.fireStateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setRangeProperties(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setValueIsAdjusting(Unknown Source)
	at javax.swing.JSlider.setValueIsAdjusting(Unknown Source)
	at javax.swing.plaf.basic.BasicSliderUI$TrackListener.mouseReleased(Unknown Source)
	at com.sun.java.swing.plaf.windows.WindowsSliderUI$WindowsTrackListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:20:05,941 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.FormController.valueChanged(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.q.stateChanged(Unknown Source)
	at javax.swing.JSlider.fireStateChanged(Unknown Source)
	at javax.swing.JSlider$ModelListener.stateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.fireStateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setRangeProperties(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setValueIsAdjusting(Unknown Source)
	at javax.swing.JSlider.setValueIsAdjusting(Unknown Source)
	at javax.swing.plaf.basic.BasicSliderUI$TrackListener.mouseReleased(Unknown Source)
	at com.sun.java.swing.plaf.windows.WindowsSliderUI$WindowsTrackListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:20:19,170 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.dataui.DataRenderer$1.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:20:27,392 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.dataui.DataRenderer$1.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:20:38,788 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.FormController.valueChanged(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.q.stateChanged(Unknown Source)
	at javax.swing.JSlider.fireStateChanged(Unknown Source)
	at javax.swing.JSlider$ModelListener.stateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.fireStateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setRangeProperties(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setValue(Unknown Source)
	at javax.swing.JSlider.setValue(Unknown Source)
	at com.servoy.j2db.util.n.actionPerformed(Unknown Source)
	at javax.swing.JTextField.fireActionPerformed(Unknown Source)
	at javax.swing.JTextField.postActionEvent(Unknown Source)
	at javax.swing.JTextField$NotifyAction.actionPerformed(Unknown Source)
	at javax.swing.SwingUtilities.notifyAction(Unknown Source)
	at javax.swing.JComponent.processKeyBinding(Unknown Source)
	at javax.swing.JComponent.processKeyBindings(Unknown Source)
	at javax.swing.JComponent.processKeyEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:20:53,569 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.FormController.valueChanged(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.q.stateChanged(Unknown Source)
	at javax.swing.JSlider.fireStateChanged(Unknown Source)
	at javax.swing.JSlider$ModelListener.stateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.fireStateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setRangeProperties(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setValue(Unknown Source)
	at javax.swing.JSlider.setValue(Unknown Source)
	at com.servoy.j2db.util.n.actionPerformed(Unknown Source)
	at javax.swing.JTextField.fireActionPerformed(Unknown Source)
	at javax.swing.JTextField.postActionEvent(Unknown Source)
	at javax.swing.JTextField$NotifyAction.actionPerformed(Unknown Source)
	at javax.swing.SwingUtilities.notifyAction(Unknown Source)
	at javax.swing.JComponent.processKeyBinding(Unknown Source)
	at javax.swing.JComponent.processKeyBindings(Unknown Source)
	at javax.swing.JComponent.processKeyEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:21:40,801 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.FormController.notifyVisible(Unknown Source)
	at com.servoy.j2db.FormManager.a(Unknown Source)
	at com.servoy.j2db.FormManager.do(Unknown Source)
	at com.servoy.j2db.develop.ad.do(Unknown Source)
	at com.servoy.j2db.FormManager$History.js_go(Unknown Source)
	at com.servoy.j2db.FormManager$History.js_back(Unknown Source)
	at com.servoy.j2db.cmd.a5.doIt(Unknown Source)
	at com.servoy.j2db.cmd.c$2.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:23:23,146 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.sql.SQLException: connection already closed or transaction in progress
	at com.servoy.j2db.persistence.datasource.TransactionConnection.close(Unknown Source)
	at com.servoy.j2db.util.Utils.closeConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.dataui.SpecialTabPanel.stateChanged(Unknown Source)
	at com.servoy.j2db.dataui.TablessPanel.setSelectedIndex(Unknown Source)
	at com.servoy.j2db.dataui.TablessPanel.addTab(Unknown Source)
	at com.servoy.j2db.dataui.SpecialTabPanel.addTab(Unknown Source)
	at com.servoy.j2db.dataui.ComponentFactory.a(Unknown Source)
	at com.servoy.j2db.dataui.ComponentFactory.a(Unknown Source)
	at com.servoy.j2db.dataui.ComponentFactory.createComponent(Unknown Source)
	at com.servoy.j2db.dataui.DataRendererFactory.a(Unknown Source)
	at com.servoy.j2db.dataui.DataRendererFactory.completeRenderers(Unknown Source)
	at com.servoy.j2db.FormController.a(Unknown Source)
	at com.servoy.j2db.FormController.try(Unknown Source)
	at com.servoy.j2db.FormManager.int(Unknown Source)
	at com.servoy.j2db.scripting.CreationalPrototype.get(Unknown Source)
	at org.mozilla.javascript.ScriptRuntime.getProp(ScriptRuntime.java:726)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1904)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:94)
	at com.servoy.j2db.scripting.e.call(Unknown Source)
	at com.servoy.j2db.develop.debugger.k.a(Unknown Source)
	at com.servoy.j2db.develop.debugger.k.executeFunction(Unknown Source)
	at com.servoy.j2db.FormController.a(Unknown Source)
	at com.servoy.j2db.FormController.a(Unknown Source)
	at com.servoy.j2db.FormController.else(Unknown Source)
	at com.servoy.j2db.FormController.a(Unknown Source)
	at com.servoy.j2db.FormController.valueChanged(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.a(Unknown Source)
	at com.servoy.j2db.util.gui.v.intervalAdded(Unknown Source)
	at com.servoy.j2db.dataprocessing.h.new(Unknown Source)
	at com.servoy.j2db.dataprocessing.h$2.run(Unknown Source)
	at com.servoy.j2db.dataprocessing.h.a(Unknown Source)
	at com.servoy.j2db.dataprocessing.FoundSet.new(Unknown Source)
	at com.servoy.j2db.dataprocessing.FoundSet.for(Unknown Source)
	at com.servoy.j2db.dataprocessing.FoundSet.a(Unknown Source)
	at com.servoy.j2db.dataprocessing.FoundSet.browseAll(Unknown Source)
	at com.servoy.j2db.FormController.loadAllRecordsImpl(Unknown Source)
	at com.servoy.j2db.FormController$2.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:25:27,412 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.util.NoSuchElementException: Timeout waiting for idle object
	at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:801)
	at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:110)
	at com.servoy.j2db.persistence.datasource.i.getConnection(Unknown Source)
	at com.servoy.j2db.persistence.Server.getConnection(Unknown Source)
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.FormController.notifyVisible(Unknown Source)
	at com.servoy.j2db.FormManager.a(Unknown Source)
	at com.servoy.j2db.FormManager.do(Unknown Source)
	at com.servoy.j2db.develop.ad.do(Unknown Source)
	at com.servoy.j2db.j$1.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2007-06-13 17:25:27,412 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
com.servoy.j2db.ApplicationException: Cannot save form data
	at com.servoy.j2db.dataprocessing.aa.if(Unknown Source)
	at com.servoy.j2db.FormController.notifyVisible(Unknown Source)
	at com.servoy.j2db.FormManager.a(Unknown Source)
	at com.servoy.j2db.FormManager.do(Unknown Source)
	at com.servoy.j2db.develop.ad.do(Unknown Source)
	at com.servoy.j2db.j$1.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.servoy.j2db.persistence.RepositoryException: java.util.NoSuchElementException: Timeout waiting for idle object Timeout waiting for idle object
	at com.servoy.j2db.dataprocessing.SQLEngine.performUpdates(Unknown Source)
	... 14 more

If there is anything you can advise from this, or anything else you might be able to suggest I try before I create some dummy files etc. to send you?

Thanks,
Rafi

Unfortunately it is very difficult to debug, and the log doesn’t tell me much. Try to just make a very basic demo, 1 table, a few fields, etc.

Hi Scott,
just wondering if you had had any luck with the files I emailed you?
I am meant to be going to client tomorrow (Tuesday 19th June) to get this all working, but won’t be able to unless I can get some help :(

Hope you can,

thanks,
Rafi

Hi Scott,
I finally managed to have a go with Servoy 2.2.7 and your driver, and it works perfectly!
I am attaching a solution using the same stuff I sent you last time.
It must be some issue with Servoy 3.1.x

Let me know if you come up with something,

thanks,
Rafi

test_fm_2.servoy (7.29 KB)

goldcougar:
There are a good list of bugs that I haven’t gotten to or figured out yet…but I’m glad you found a work-around. Since this appears to be a ‘mostly’ working driver now, I have setup a page at http://it.dnacenter.com/servoy/ with a download link, instructions, and bug list. Future updates will be made on that page, but you can feel free to continue posting bugs and such as well on this post for eveyone to see, and I will respond on this topic as well.

Hi Scott,

Thanks for making these plugins available to us!

I have a client that has a lot of different CSV files to import on a regular basis, and they will need to be imported to different tables, depending on the column names in the first row. I already know what the column names are for all the CSV file types, so that helps. Do you have a suggestion as to how I could test for that first row of column names before doing the actual import, to match the CSV file to the corresponding table, and then afterwards continue by pointing the import to the correct table?

Thanks in advance,

Ben

I’m going to go on a limb here and try to answer my own question… :lol:

Thanks to Harjo’s excellent tip found in the following post:

http://forum.servoy.com/viewtopic.php?t=2635/

I believe I can modify his instructions slightly and use them to get the contents of the first line of the CSV file, which will in turn help me determine in which table exactly to consequently do the import.

Thanks Harjo and Scott! Now that’s what I call a group effort! :wink:

Sincerely,

Ben

Was looking for something else and came across your post on the CSV files. You certainly can use Harjo’s method too but another way is to simply use a text editor like BBEdit (or its free companion TextWrangler), TextMate (or something similar in the PC world) and turn that CSV file into a series of select statements. You indicate that this will be done on a regular basis and doing it that way (insert statements) will certainly be much faster. We have a similar situation here where I get weekly reports from the hospital. In my case I know the contents of the file by its name and then run the scripted edits in BBEdit but it would be just as easy to use the column names in the first row if that was known. I get 4 or 5 thousand rows a week that have to go into 4 different tables and the whole operation takes a couple of minutes at most to run: downloading the files, editing the contents and inserting the records.