[GELÖST] Re: Leeres globales ResultSet nach erstellung eines

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [GELÖST] Re: Leeres globales ResultSet nach erstellung eines

Re: [GELÖST] Re: Leeres globales ResultSet nach erstellung eines

von komma4 » Sa, 05.09.2009 16:13

Wenn Du schon C++ (oder eine andere Programmiersprache) kennst/kannst ... mir hat Andrews Makro Dokument "gelangt" - plus die Beispiele aus dem "alten" englischen Forum, um die API-Dokumentation lesen und verstehen zu können.

Bücher bringen IMHO nicht soooviel.

Aber: up to you, wie Du am Besten lernen kannst

Re: Leeres globales ResultSet nach erstellung eines anderen

von komma4 » Sa, 05.09.2009 07:37

STRUKTUR ist kein zulässiger Typebezeichner,
wenn ich das noch richtig im Kopf habe kann eine Struct nicht GLOBAL definiert werden, sodass sie den Inhalt behält. Verwendest Du eine zulässige Bezeichnung (INT, STRING) dann bleibt auch der Inhalt erhalten.

Setze das [GELÖST] in den Titel des ersten Postings, damit es in den Übersichten / Trefferlisten erscheint.

Viel Erfolg, noch!

Re: Leeres globales ResultSet nach erstellung eines anderen

von komma4 » Fr, 04.09.2009 16:56

Auch das funktioniert, Andreas:

Code: Alles auswählen

    ' Variante: 2 HSQLDB
    oDatenquelle1 = oDBKontext.getByName( "base_HSQLDB_test" )
    oDatenquelle2 = oDBKontext.getByName( "base_HSQL_million" )

    ' Verbindung zur DB herstellen
    If Not oDatenquelle1.IsPasswordRequired Then
       oVerbindung1 = oDatenquelle1.getConnection( "" , "" )
    Else
       oInteractionHandler = createUnoService( "com.sun.star.sdb.InteractionHandler" )
       oVerbindung1 = oDatenquelle1.connectWithCompletion( oInteractionHandler )
    End If
    If Not oDatenquelle2.IsPasswordRequired Then
       oVerbindung2 = oDatenquelle2.getConnection( "" , "" )
    Else
       oInteractionHandler = createUnoService( "com.sun.star.sdb.InteractionHandler" )
       oVerbindung2 = oDatenquelle2.connectWithCompletion( oInteractionHandler )
    End If

    ' Statement erzeugen
    oStatement1 = oVerbindung1.createStatement()

    sSQL = "SELECT * FROM ""Tabelle1"" WHERE ""datum"" =  NOW() "
    ' Abfrage absetzen
    oResultSet1 = oStatement1.executeQuery( sSQL )

    Select Case oResultSet1.next()
       Case FALSE
          msgbox "1: nicht gefunden"
       Case TRUE
          msgbox "1: Resultset vorhanden"
    End Select


    oStatement2 = oVerbindung2.createStatement()
    sSQL = "SELECT * FROM ""tab_5000Adressen"" WHERE ""id"" = '5' "
    oResultSet2 = oStatement2.executeQuery( sSQL )

    Select Case oResultSet2.next()
       Case FALSE
          msgbox "2: nicht gefunden"
       Case TRUE
          msgbox "2: Resultset vorhanden"
    End Select

    print oResultSet1.getString( 2 )
    print oResultSet2.getString( 4 )

Re: Leeres globales ResultSet nach erstellung eines anderen

von keksi1970 » Fr, 04.09.2009 15:49

gehe ich richtig in der annahme, daß

du auf 2 Verschiedene Datenbanken zugreifst ?

also ResultSet1= Verbindung.Datenbank1
ResultSet2 = Verbindung.Datenbank2 ?

LG
Andreas

Re: Leeres globales ResultSet nach erstellung eines anderen

von komma4 » Fr, 04.09.2009 14:38

ich weiss nicht, was Du machst ... aber hier funktioniert das.

Erweiterung des Beispiels von gestern, auch HSQLDB, unter OOo3.0.1/WinXP pro

Code: Alles auswählen

' zwei RESULTSETs
' 2009-09-04

Sub de27576

' Kontext holen
Dim oDBKontext 
oDBKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )

If IsNull( oDBKontext ) Then
	msgbox "kein DB Kontext" 
	exit sub
End If

' Datenquelle auswählen
' name of OOo registered data source
oDatenquelle = oDBKontext.getByName( "base_hsqldb_Datenbank" )

 ' Verbindung zur DB herstellen
If Not oDatenquelle.IsPasswordRequired Then
	oVerbindung = oDatenquelle.getConnection( "" , "" )
Else
	oInteractionHandler = createUnoService( "com.sun.star.sdb.InteractionHandler" )
	oVerbindung = oDatenquelle.connectWithCompletion( oInteractionHandler ) 
End If 
 
' Statement erzeugen
oStatement1 = oVerbindung.createStatement()

sSQL = "SELECT * FROM ""Tabelle1"" WHERE ""datum"" =  NOW() "
' Abfrage absetzen
oResultSet1 = oStatement1.executeQuery( sSQL )

Select Case oResultSet1.next()
	Case FALSE
		msgbox "1: nicht gefunden"
 	Case TRUE
 		msgbox "1: Resultset vorhanden"
End Select


oStatement2 = oVerbindung.createStatement()
sSQL = "SELECT * FROM ""Tabelle3"" WHERE ""Nr."" = '50' "
oResultSet2 = oStatement2.executeQuery( sSQL )

Select Case oResultSet2.next()
	Case FALSE
		msgbox "2: nicht gefunden"
 	Case TRUE
 		msgbox "2: Resultset vorhanden"
End Select

print oResultSet1.getString( 2 ) 
print oResultSet2.getString( 4 ) 

End Sub

Re: Leeres globales ResultSet nach erstellung eines anderen

von gigabert » Fr, 04.09.2009 10:55

Hallo,

es ist wohl bei einigen Datenbanken/Treibern so, dass ein ResultSet nur einmal durchlaufen werden kann. Evtl. hast du ja immer nur 1 ResultSet-Objekt, wenn du es weiterkopierst. Versuche es doch mal mit unterschiedlichen neuen Objekten. Welche DBMS benutzt du denn?

Gruss
Bert

Re: Leeres globales ResultSet nach erstellung eines anderen

von komma4 » Fr, 04.09.2009 10:39

anonym hat geschrieben:Das Object
für das Resultset (ist ja eine Kopie) ist global
Kopie? Meinst Du das so, das Du nicht direkt die Daten der Datenbank im Zugriff hast...?
anonym hat geschrieben:Den Code kann ich leider nicht beifügen, selbst ich hab da kaum
Meine Glaskugel sagt mir zu diesem Fall: du verwendest die gleiche oConnection

Nach oben