SQL-Abfragen auf den ADS

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

SQL-Abfragen auf den ADS

Beitrag von Werner_Bayern »

Servus,

warum funktioniert das nicht (ADS mit dbfntx)?

Code: Alles auswählen

#include "Common.ch"
#include "adsdbe.ch"

  cConnect := "DBE=ADSDBE;SERVER=\\192.168.202.22:6262\ADSDATEN"
  oSession := DacSession():New( cConnect )

  // Check for connection success
  IF .NOT. oSession:isConnected()
   Alert("Fehler: " + oSession:GetLastMessage() + ";Fehlernr.: " + var2char(oSession:GetLastError()) + ";Keine Verbindung zum Server", {"Quit"} )
   QUIT
  ENDIF

IF .NOT. oSession:executeQuery("select * from artikel",, .T.)  // geht leider nicht...
   Alert("select fehlgeschlagen")
ELSE
   ? "DBF:", alias()
   ? "lastrec:", lastrec()
ENDIF

PROCEDURE dbesys
  IF(!DbeLoad("ADSDBE"))
    alert( "Database-Engine ADSDBE nicht geladen" , {"OK"} )
    QUIT
  ENDIF

  DbeSetDefault( "ADSDBE" )
  RETURN
executeQuery() gibt .t. zurück, Alias ist leer, LastRec() auf 0.
Artikel-Tabelle gibt es, Zugriff über die ADSDBE per dbuseArea() funktioniert einwandfrei.
es grüßt

Werner

<when the music is over, turn off the lights!>
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SQL-Abfragen auf den ADS

Beitrag von UliTs »

Hab nur wenig Zeit...
Gibt es vielleicht statt "oSession:executeQuery" so etwas wie "oSession:openQuery" ?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: SQL-Abfragen auf den ADS

Beitrag von Marcus Herz »

Ixg seh gerade, du hast keine Connection zu einem ADD. Das ist das mindeste mit NTX, vermute ich
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

Re: SQL-Abfragen auf den ADS

Beitrag von Dominik Krebs »

Ist das nicht nur mit add möglich?
Gruß Dominik
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: SQL-Abfragen auf den ADS

Beitrag von Werner_Bayern »

Servus,

das funktioniert auch nicht, das war ursprünglich der erste Test, der Einfachheit halber hab ich das entfernt gehabt.

Code: Alles auswählen

cConnect := "DBE=ADSDBE;SERVER=\\192.168.202.22:6262\ADSDATEN\DD1.ADD"
IF .NOT. oSession:executeQuery("select * from artikel",, .T.)
Geht auch auf Daten ohne DD nicht.
es grüßt

Werner

<when the music is over, turn off the lights!>
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

Re: SQL-Abfragen auf den ADS

Beitrag von Dominik Krebs »

Wusste doch da war mal was.
Ich würde dir gerne helfen, aber ich verwende die ACE Klasse von Friedhelm, daher kenne ich mich mit ?ODBC? Nicht aus :lol:
Gruß Dominik
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: SQL-Abfragen auf den ADS

Beitrag von Werner_Bayern »

Keiner eine Lösung? Es sind also mit Bordmitteln keine SQL-Abfragen auf den ADS möglich?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: SQL-Abfragen auf den ADS

Beitrag von Marcus Herz »

Hast du die Session auf NTX gesetzt. Da waren ein paar Einstellungen möglich, hab die Doku aber nicht zu Hand. Wenn nämlich nichts gesetzt wird, sucht ADS nach ADT
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: SQL-Abfragen auf den ADS

Beitrag von nightcrawler »

SQL auf NTX IIRC ausschließlich mit Data Dictionary und der Tabelle darin angelegt.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: SQL-Abfragen auf den ADS

Beitrag von Marcus Herz »

Ich dachte an:

Code: Alles auswählen

DbeInfo( COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_NTX )
DbeInfo( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_NTX )
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: SQL-Abfragen auf den ADS

Beitrag von Werner_Bayern »

Servus,

danke, aber nichts funktioniert...

Datadictionary funktioniert:

Code: Alles auswählen

IF .NOT. oSession:executeQuery("select * from artikel",, .T.)  
   Alert("select fehlgeschlagen")
ELSE
   ? "DBF:", alias()
   ? "lastrec:", lastrec()
   wait
   IF empty(alias())
      use artikel alias ar   // via adsdbe
   ENDIF
   browse()
ENDIF
executeQuery ist .t., alert kommt nicht. Ausgabe aber:
DBF:
lastrec: 0
das anschließende Browse() funktioniert...

dbesys:

Code: Alles auswählen

  LOCAL oSession

   SET COLLATION TO GERMAN

   IF ! DbeLoad( "DBFDBE", .T.)
      Alert( "Database-Engine DBFDBE nicht geladen" , {"OK"} )
   ENDIF

   IF ! DbeLoad( "NTXDBE", .T.)
      Alert( "Database-Engine NTXDBE nicht geladen" , {"OK"} )
   ENDIF

   IF ! DbeLoad( "SDFDBE", .T. )         // load SDFDBE "hidden"
      ALERT( "SDFDBE not loaded" , {"OK"} )
   ENDIF

   IF ! DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
      Alert( "DBFNTX Database-Engine;konnte nicht erzeugt werden" , {"OK"} )
   ENDIF

    IF ! DbeLoad("ADSDBE", .F. )
      alert( "Database-Engine ADSDBE nicht geladen" , {"OK"} )
    ENDIF

    oSession := GetAdsConnection(, .T.)
    IF ( oSession:isConnected())
      DBESetDefault("ADSDBE")
    ENDIF

    DbeInfo( COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_NTX )
    DbeInfo( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_NTX )
    
    RETURN
es grüßt

Werner

<when the music is over, turn off the lights!>
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SQL-Abfragen auf den ADS

Beitrag von UliTs »

Was sagt denn Alaska dazu?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: SQL-Abfragen auf den ADS

Beitrag von Werner_Bayern »

UliTs hat geschrieben: Di, 16. Nov 2021 8:44 Was sagt denn Alaska dazu?
Bis jetzt noch nichts, weil ich noch nicht angefragt habe. Wollte erst klären, ob ich was falsch mache, da ich erst seit ein paar Monaten mit dem ADS zu tun habe.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: SQL-Abfragen auf den ADS

Beitrag von Marcus Herz »

ich kenn die ADSDBE zu wenig, um noch Tips geben zu können. Sorry
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: SQL-Abfragen auf den ADS

Beitrag von Werner_Bayern »

Hab das jetzt unter Hinweis auf diesen Thread an Alaska geschickt.
es grüßt

Werner

<when the music is over, turn off the lights!>
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SQL-Abfragen auf den ADS

Beitrag von UliTs »

Hat sich inzwischen etwas ergeben?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: SQL-Abfragen auf den ADS

Beitrag von Werner_Bayern »

Servus Uli,

ja, es geht nur in Verbindung mit einem DataDictionary und dann nicht mit executeQuery, sondern mit

Code: Alles auswählen

cSQL := "select * from artikel"  // ohne ".dbf"!
oStmt := DacSqlStatement(oADS):fromChar(cSQL):build()
oStmt:query()
Alternativ auch über ODBC.
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten