Toon posts:

[Powerbuilder] meerdere databases aansturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer met Sybase PowerBuilder 10.0 gegevens uit 2 databases op te vragen met 1 applicatie. Ik krijg zonder probleem gegevens uit één database (foto database), maar wanneer ik wat tekst uit database twee wil vragen (tekst database), dan gebeurt er niks.

Iemand enig idee hoe ik dit kan oplossen?

MvG

TDKa

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

En wat heb je zelf al geprobeerd om het op te lossen? Krijg je foutmeldingen? Waar heb je op gezocht? Wat heb je daarbij gevonden? Als je dat geprobeerd hebt: wat werkte er niet aan? Waaorm niet?

Je geeft erg weinig informatie. Lees P&W FAQ - De "quickstart" even door en pas je topicstart even aan, want hiermee kunnen we niet veel. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ione
  • Registratie: Februari 2004
  • Niet online
Heb je wel een tweede transactie aangemaakt naar de tweede database? Voor elke connectie moet je een transactieobject creeeren.

Indien dit niet duidelijk is moet je het maar even zeggen, dan ga ik er verder op in.

Verwijderd

Topicstarter
Ik krijg dus helemaal geen foutmelding, maar waarschijnlijk komt het doordat ik geen tweede transactie object gemaakt heb.
In de help staat ook niet beschreven hoe het dan iig wel moet (of ik kan gewoon niet zoeken ;) ). En bij de sybase forums had ik al gezocht naar multiple database connections, maar daar krijg ik alleen iets te vinden dat je met meerdere database profiles aan de slag kan.

Ik heb ik de applicatie bij het runnen deze code gebruikt:

SQLCA.DBMS = "ODBC"
SQLCA.DBParm = "ConnectString='DSN=fotodb_ODBC;UID=dba;PWD=sql'"
CONNECT USING SQLCA;

SQLCA.DBMS = "ODBC"
SQLCA.DBParm = "ConnectString='DSN=tekst_ODBC;UID=dba;PWD=sql'"
CONNECT USING SQLCA;

Hoe zou ik dan mijn transaction object moeten noemen?

MvG

TDKa

  • ione
  • Registratie: Februari 2004
  • Niet online
Je tweede transactieobject zou je een andere naam moeten geven. Nu overschrijf je SQLCA.
Moet je gedurende de hele applicatie bij de tweede database kunnen? Of is het alleen eenmalig even wat ophalen?

In het eerste geval zou je een global transactieobject moeten aanmaken (SQLCA is ook een global object).
Deze defineer je dan als volgt bij de declaratie van global variables:
TRANSACTION gtr_trans_tekst

In het open event van de applicatie connect je dan met SQLCA naar de eerste database. En met deze code naar de tweede:
gtr_trans_tekst = CREATE TRANSACTION
gtr_trans_tekst.DBMS = "ODBC"
gtr_trans_tekst.DBParm = "ConnectString='DSN=tekst_ODBC;UID=dba;PWD=sql'"
CONNECT USING gtr_trans_tekst;

Bij je queries geef je dan op USING gtr_trans_tekst

Ik doe dit even uit m'n hoofd. Kan zo even voor je verder zoeken. Maar hiermee heb je een richting...

Verwijderd

Topicstarter
Ik moet idd hele tijd met 2 databases tegelijk connected blijven.
Zal nu even de code gaan uitproberen. Over een half uur- uurtje komt er wel een reply of het werkt. Alvast bedankt ;)

MvG

TDKa

Verwijderd

Topicstarter
Hm.. ik ben wel een heel stuk verder gekomen, maar nu krijg ik wel de melding:

Database C0038: SQLSTATE = S0002 [Sybase][ODBC Driver][Adaptive Server Anywhere]Table 'tekst' not found

Dit is de uiteindelijke code bij het openen van de application:
code:
1
2
3
4
5
6
7
8
9
SQLCA.DBMS = "ODBC"
SQLCA.DBParm = "ConnectString='DSN=foto_ODBC;UID=dba;PWD=sql'"
CONNECT USING SQLCA;

TRANSACTION SQLCA1
SQLCA1 = CREATE TRANSACTION
SQLCA1.DBMS = "ODBC"
SQLCA.DBParm = "ConnectString='DSN=tekst_ODBC;UID=dba;PWD=sql'"
CONNECT USING SQLCA1;

En dit is waar ik onder andere de SQLCA1 voor nodig heb
code:
1
2
3
4
5
6
7
8
9
TRANSACTION SQLCA1

        string omschrijving_tekst
          SELECT omschrijving
          INTO :omschrijving_tekst
          FROM tekst
          WHERE text_id = 2
          USING SQLCA1;
          sle_1.text = omschrijving_tekst

Ik heb ik de database gekeken, de tabelnaam heet tekst, en de velden heten omschrijving en text_id. Ook had ik al gecontroleerd dat het naar de juiste database verwezen is.

Iemand enig idee waar ik een fout heb gemaakt?

MvG

TDKa

  • ione
  • Registratie: Februari 2004
  • Niet online
probeer eens de return waarde van de connect aan sqlca1 op te vragen....

in je ODBC-settings staat ook dba als user? Tabel is aangemaakt onder dba?
Pagina: 1