[РЕШЕНО] Parameter Name Substitution

Автор adi_den2013, 21 ноября 2013, 09:53

0 Пользователи и 1 гость просматривают эту тему.

adi_den2013

PostgreSQL 9.3
AOO 4.0.1
Windows XP SP3

=======================================================================================================
После переноса данных из внутренней базы во внешнюю перестали выполнять запросы с задаваемыми переменными (см. скрин).
В инете нашла следующее предложение решить проблему:

Цитировать
The Solution

The OpenOffice.org ODBC-SDBC bridge (more sloppy: OOo's ODBC driver) features substituting named parameters with unnamed ones before sending statements to the system driver.

Parameter name substitution can be enabled on a per-data-source basis. For this, the "Info" property of a data source should contain a name-value-pair with
Name: ParameterNameSubstituion
Value: TRUE

Но не нашла, где этот параметр через настройки изменить  :(.

Еще как вариант было предложено запустить макрос, меняющий ParameterNameSubstituion

ЦитироватьREM  *****  BASIC  *****

Option Explicit

Sub Main
   Dim sDataSourceName as String
   sDataSourceName = InputBox( "Please enter the name of the data source:" )
   EnableParameterNameSubstitution(sDataSourceName )
End Sub

Sub EnableParameterNameSubstitution( sDataSourceName as String )
   ' the data source context (ehm - the service name is historical : )
   Dim aContext as Object
   aContext = createUnoService( "com.sun.star.sdb.DatabaseContext" )

   If ( Not aContext.hasByName( sDataSourceName ) ) Then
       MsgBox "There is no data source named " + sDataSourceName + "!"
       Exit Sub
   End If

   ' the data source
   Dim aDataSource as Object
   aDataSource = aContext.getByName( sDataSourceName )

   ' append the new ParameterNameSubstitution flag
   Dim bFlag as Boolean
   bFlag = TRUE
   Dim aInfo as Variant
   aInfo = aDataSource.Info
   aInfo = AddInfo( aInfo, "ParameterNameSubstitution", bFlag )

   ' and write back
   aDataSource.Info = aInfo
   ' flush (not really necessary, but to be on the safe side : )
   aDataSource.flush
End Sub

Function AddInfo( aOldInfo() as new com.sun.star.beans.PropertyValue,sSettingsName as String, aSettingsValue as Variant ) as Variant
   Dim nLower as Integer
   Dim nUpper as Integer
   nLower = LBound( aOldInfo() )
   nUpper = UBound( aOldInfo() )

   ' look if the setting is already present
   Dim bNeedAdd as Boolean
   bNeedAdd = TRUE

   Dim i As Integer
   For i = nLower To nUpper
       If ( aOldInfo( i ).Name = sSettingsName ) Then
           aOldInfo( i ).Value = aSettingsValue
           bNeedAdd = FALSE
       End If
   Next i

   ' allocate the new array
   Dim nNewSize as Integer
   nNewSize = ( nUpper - nLower )
   If bNeedAdd Then nNewSize = nNewSize + 1
   Dim aNewInfo( nNewSize ) as new com.sun.star.beans.PropertyValue

   ' copy the elements (a simply copy does not work in Basic)
   For i = nLower To nUpper
       aNewInfo( i ) = aOldInfo( i )
   Next i

   ' append the new setting, if necessary
   If ( bNeedAdd ) Then
       aNewInfo( nUpper + 1 ).Name = sSettingsName
       aNewInfo( nUpper + 1 ).Value = aSettingsValue
   End If

   AddInfo = aNewInfo()
End Function

К сожалению, после запуска макроса на выполнение все виснет  :-[

Помогите, пожалуйста

[вложение удалено Администратором]
Яна (in real)

adi_den2013

Нужно сделать соответствующие настройки драйвера PostgreSQL.

См. скрин.

[вложение удалено Администратором]
Яна (in real)