Boa tarde,
Esta ligação  TRAVA com outra aplicação concorrente por exemplo “delphi client aplication com Firebird”! Estou a usar o ODBC free.
A ligação ODBC está assim “**localhost/3050:**c:\trab\fb30\dados\MeusDados.Fdb”. portanto o “data engine” fala com o server a ligação “não” é embebed
Porém  trava/Lock !?
Coisa mais estranha, já que da documentação do FB3.0 resulta que podem estar em rede um numero ilimitado de engines/users!? Se bem percebo nenhum usa exclusivamente a Database.FDB
Será que alguém pode ajudar-me. O codigo tal qual está:
DatabaseContext = createUnoService(“com.sun.star.sdb.DatabaseContext”)
DataSource = DatabaseContext.getByName(“GestACRA”)    ’ Com ODBC porque persiste o problema do acesso directo via LibreOfice 7.5.3
Connection = DataSource.ConnectWithCompletion(InteractionHandler)  ’ PopUp User: ??? /Pwd: *******
'Consulta:
oQuery = Connection.createStatement()
oQuery.ResultSetType = com.sun.star.sdbc.ResultSetType.SCROLL_INSENSITIVE
oQuery = Connection.createStatement()
’
oQuery.ResultSetType = com.sun.star.sdbc.ResultSetType.SCROLL_INSENSITIVE
sText = InputBox ("Id. N.º ",“NIF da Empresa: !”) ’ NIF , DscEntidad etc… qq campo da consulta
Não haverá algo como:(?)oQuery.CreateParameter   seguido de Parameter.Add(Parm1…2…3)  <==   onde poderia ver isso ando um tanto perdido
sDSCENTIDAD = “’”+ CStr(sText) +"’"    ’ Da  I nputBox na verdade  aqui precisava era um ou parâmetro
sSql = " SELECT FIRST 1 DISTINCT E.CENTIDAD_ID ,  E.DSCENTIDAD , "  & _
" E.TPMORA || ’ ’ ||  E.MORADA ||’, N.º:   '|| COALESCE (  E.NPOLICIA ,  E.ANDAR , ‘S/’ )  Morada, "  & _
" L.CPALFA AS CPALFA ,  E.NIF, E.USERID "  & _
" FROM  EMPRESAS  E ,  LOCART  L  "   & _
" WHERE E.CP4=L.CP4  AND  E.CP3= L.CP3  AND  E.NIF IS NOT NULL AND  E.NIF <> ‘’ "   & _
" AND NIF = " +sDSCENTIDAD  & _
" ORDER BY E.DSCENTIDAD "
nota: também dá para fazer assim : " AND NIF = :NIF "    & _
mas de seguida há que fazer  sSql = Replace(sSql, “:NIF”,sText)   ’ e, tantas vezes tantas quantos os parâmetros! Qualquer interface assume que =:Parametro?
oQuery.Add.parameter  ?!?oResult = oQuery.executeQuery(sSql)
If Not IsNull(oResult) Then
while oResult.next()
txtNomeEmp.Text   = oResult.getString(2)    ' Nome da Empresa
txtMoradaEmp.Text = oResult.getString(3)   ' Morada 
txtCPALFAEmp.Text = oResult.getString(4) ' Código Postal /Zip Code
’ E, assim completo  a morada da carta
wend
End If
Connection.close()
Funciona, mas com conflitos sempre tenho outra aplicação concorrente  a usar a mesma base!?
É que não faz sentido ter 2 bases, como é bom de ver uma para lidar com o LibreOffice e outra
com o meu cliente em delphi  ou lazarus?!
Alguém me dá uma ajuda? Obrigado
