Jump to content

Variable in einer SQLite3 Datenbank suchen/abfragen


elVitas
 Share


Recommended Posts

Liebe community,

 

ich bin neu im Forum, weil ich schon viele Beiträge gelesen habe, aber dennoch nicht weiterkomme. Ich hoffe ihr könnt mir helfen 👏

 

Ich möchte eine Variable, die ich mit dem Modul DTM-Zeichen empfangen abfrage, in einer Tabelle suchen lassen. Es handelt sich um eine SQLite3 DB, wie hier erklärt:

 

Für mein Sript habe ich mich dabei an diesem Beispiel orientiert.

 

Hier das Script:


    ' CursorTypeEnum Values
    Const adOpenForwardOnly = 0
    Const adOpenKeyset = 1
    Const adOpenDynamic = 2
    Const adOpenStatic = 3
     
    ' LockTypeEnum Values
    Const adLockReadOnly = 1
    Const adLockPessimistic = 2
    Const adLockOptimistic = 3
    Const adLockBatchOptimistic = 4
     
    ' CommandTypeEnum Values
    Const adCmdUnknown = &H0008
    Const adCmdText = &H0001
    Const adCmdTable = &H0002
    Const adCmdStoredProc = &H0004
     
     
    Function KnownCallerId ( KndNr )
     
        Dim bReturn
        bReturn = false
     
        Dim sDsn
        sDsn = "dsn=c:\sqlite\kd.db"
     
        ' open connection to database
        Dim db
        Set db = CreateObject("ADODB.Connection")
        db.Open sDsn
     
        ' open recordset
        Dim sSQL
        Dim rs
        sSQL = "SELECT * FROM Kunden WHERE knd_nr1 = KndNr"
     
        Set rs = CreateObject("ADODB.Recordset")
        rs.Open sSQL, db, adOpenDynamic, adLockOptimistic, _
            adCmdText
     
        ' if there are records in recordset,
        ' this caller seems to be known
        bReturn = not rs.EOF
     
        rs.Close
        Set rs = Nothing
     
        db.Close
        Set db = Nothing
     
        KnownCallerId = bReturn
     
    End Function

 

Soweit so gut, aber nach Eingabe der Variable bricht das Telefonat ab. Könnt ihr mir sagen warum?

 

Zu erwähen wäre noch, es handelt sich um eine CallRouting-Regel am Client, nicht am Server. Daher liegt die kd.db auf meinem Computer Laufwerk c:\sqlite\.

 

Ablauf.JPG

Link to comment
Share on other sites


  • Most Valued User
1 hour ago, elVitas said:

Zu erwähen wäre noch, es handelt sich um eine CallRouting-Regel am Client, nicht am Server. Daher liegt die kd.db auf meinem Computer Laufwerk c:\sqlite\.

 

Callroutings werden immer auf dem Server ausgeführt. Einfach mal das Verzeichnis auf den Server legen.

Link to comment
Share on other sites


  • 3 months later...
On 8/1/2019 at 1:12 PM, SvenS said:

 

Callroutings werden immer auf dem Server ausgeführt. Einfach mal das Verzeichnis auf den Server legen.

 

Danke für den Tipp. Das habe ich nun gemacht, leider bricht mir der Vorgang im CallRouting immer noch im Modul "Variable auswerten" ab.

 

Hat noch jemand eine Idee, wo der Fehler liegen könnte?

Link to comment
Share on other sites


  • 2 weeks later...
On 11/13/2019 at 8:53 AM, SvenS said:

Hast du mal im IpPbxSrv.log nachgeschaut, welche Fehlermeldung erscheint ? Vielleicht hilft dir das weiter

 

Ja habe mal reingeschaut, aber ich erkenne dort nicht viel.

Anbei mal die Logdatei mit meinem Anruf auf die Nebenstelle -336, für diese habe ich eine CallRouting-Regel stellt, vielleicht kannst du etwas erkennen? 🤔

CallRouting.JPG

Log SWYX.txt

Link to comment
Share on other sites


On 11/21/2019 at 5:05 PM, Tom Wellige said:

Das ist nicht das komplette Trace für den Call. Das Trace geht bis zum Start der Ansage "Neu_Wilkommen.wav" und endet 2ms später.

Um helfen zu können, benötige ich die exportierte .RSE Datei des Call Routing Skripts und das komplette Trace eines Testanrufes.

 

 

Hallo Tom, hab dir eine PM geschickt mit den Dateien.

Link to comment
Share on other sites


Hallo Vitali,

 

im Server Trace finden man sehr schnell den Hauptverdächtigen ;) 

28 06:50:48.366 002a48 *Err SrvScrAPI  0AA46AD0 00009edc SPBXScriptSite::OnScriptError           ()
~Code:   0
~Src:    Microsoft OLE DB Provider for ODBC Drivers
~Desc:   [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben
~RetVal: 80004005
~Line:   15215 
~Column: 8
~Source code:
~        Set db = CreateObject("ADODB.Connection")
~        ^ error position

 

Da scheint etwas mit dem Connection String zu Deiner mySQL Datenbank nicht zu stimmen.

 

Ein Blick in Dein Skript zeigt mir, dass Du versuchst per ODBC auf eine lokale mySQL Datei zuzugreifen.

sDsn = "dsn=c:\sqlite\kd.db"

 

Wenn Du ODBC verwenden willst, dann musst Du erst eine ODBC Datenquelle im Windows einrichten und dort setzt Du die Verknüpfung auf Deine Datenbank. Im Skript verwendest Du dann nur noch den Namen den Du der Datenquelle gegeben hast.

 

Statt ODBC kannst Du auch OLEDB verwenden. Da musst Du vorher nichts mehr in Windows konfigurieren.

 

 

Hier ist eine Seite mit etlichen Connection String Beispielen für mySQL Datenbank. Schau mal, ob Du da fündig wirst, und Deinen Connection String angepasst bekommst.

 

Du musst während Du probierst hier nicht jedes Mal das Server Trace posten. Du kannst Du auch selbst schnell nachschauen. Wenn Du von unten hoch liest, findest Du relativ schnell eine Stelle wie oben, wo Dir eine Datenbank Fehlermeldung angezeigt wird.

 

Link to comment
Share on other sites


  • 1 year later...

Guten Tag,

 

ich sitze ebenfalls an einer Kundenummer Abfrage und komme leider nicht weiter.

 

Ich bekomme aber auch eine andere Fehlermeldung im Trace.

Ich habe schon einiges ausprobiert doch leider hat es nicht geholfen.

 

28 12:24:55.572 001040 Info SrvScript  07978B80 0000012c SPBXScript::OutputTrace                 ()   case [SetVariable17]
28 12:24:55.572 001040 Info SrvScript  07978B80 0000012c SPBXScript::OutputTrace                 () exp: KndNr = Kundennummer
28 12:24:55.572 001040 Info SrvScript  07978B80 0000012c SPBXScript::OutputTrace                 () res: KndNr = 00084
28 12:24:55.572 001040 Info SrvPBXCtl  0681DD70 0000012c SScrServer::CallIsOriginatorDiscd       () returning no
28 12:24:55.572 001040 Info SrvScript  07978B80 0000012c SPBXScript::OutputTrace                 ()   case [Evaluate11]
28 12:24:55.573 001040 Info SrvScript  07978B80 0000012c SPBXScript::OutputTrace                 () KnownCallerId(KndNr())
28 12:24:55.575 001040 *Err SrvScrAPI  0797ED20 0000012c SPBXScriptSite::OnScriptError           ()
~Code:   0
~Src:    Laufzeitfehler in Microsoft VBScript
~Desc:   Typenkonflikt: 'KndNr'
~RetVal: 800a000d
~Line:   15731 
~Column: 8
~Source code:
~        PBXScriptOutputTrace "KnownCallerId(KndNr())"
~        ^ error position
28 12:24:55.576 001040 Inf3 SrvPBXCtl  0681DD70 0000012c SPBXCallHub::SetDisconnectReason        (CallRoutingFailed, ext cause 0, U:0, T:0, '','',Unknown) stored
28 12:24:55.577 001040 Info SrvPBXCtl  0681DD70 0000012c SScrServer::OnScriptFinished            ()
28 12:24:55.577 001040 Inf2 SrvPBXCtl  0681DD70 0000012c SScrServer::EventScriptFinished         ()
28 12:24:55.577 000b44 Inf2 SrvPBXCtl  07A322A8 0000012c SScriptFsm::ActionOnScriptFinished      ()
28 12:24:55.578 000b44 Info MSRtp      0794DE98 0000012c SRtpUdp::~SRtpUdp                       -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

Hier einmal die Trace Fehlermeldung.

Link to comment
Share on other sites


Ich konnte den Fehler beheben. 

Die sSQL Abfrage im Script wahr Fehlerhaft. 

Ebenfalls hatte ich eine () in der Variablen Auswertung stehen der mich auch Probleme verursacht hat.

Weiter unten findet ihr auch die Einträge/Einstellungen die in den einzelnen Feldern vorgenommen werden müssen.
image.png.7556ac1a1ca339ba235dfc43ee13a3db.png

image.png.4f46fc103663cd5c5e8f3e783dd587f4.png

image.png.b10fde9e4ec6d20189f8596eed6384df.png

Drunter findet ihr einen angepassten Code:

' CursorTypeEnum Values
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3

' LockTypeEnum Values
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4

' CommandTypeEnum Values
Const adCmdUnknown = &H0008
Const adCmdText = &H0001
Const adCmdTable = &H0002
Const adCmdStoredProc = &H0004


function KnownCallerId ( KndNr )

	Dim bReturn
	bReturn = false

	Dim sDsn
	sDsn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
		"Data Source=c:\SwyxCallRoutings\Kundennummer\KD.mdb"

	' open connection to database
	Dim db
	Set db = CreateObject("ADODB.Connection")
	db.Open sDsn

	' open recordset
	Dim sSQL
	Dim rs
	sSQL = "select knd_nr1 from Kunden where knd_nr1 = '" & KndNr & "'"
	Set rs = CreateObject("ADODB.Recordset")
	rs.Open sSQL, db, adOpenDynamic, adLockOptimistic, adCmdText

	' if there are records in recordset, this caller seems to be known
	bReturn = not rs.EOF

	rs.Close
	Set rs = Nothing

	db.Close
	Set db = Nothing

	KnownCallerId = bReturn

end function

 

 

 

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.