Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Oracleprocedurer från Access (VB6)

Postades av 2005-10-03 14:48:55 - Mikael Gustavsson, i forum sql-server/msde, Tråden har 8 Kommentarer och lästs av 1134 personer

Jag har en accessapplikation (access 2000) som bl.a. kör procedurer i en oracledatabas.
Ett anrop kan se ut så här:
<code>
Function AngeTidviaSMS(WO_NO As Long, EMP_NO As String, HOURS As Long) As Boolean
Dim Cn As ADODB.Connection, CPw2 As ADODB.Command,Conn As String

Conn = "UID=UserID;PWD=PassWord;Driver={Microsoft ODBC for Oracle};SERVER=DB2"
Set Cn = New ADODB.Connection
With Cn
.ConnectionString = Conn
.CursorLocation = adUseClient
.Open
End With

Set CPw2 = New ADODB.Command

With CPw2
.ActiveConnection = Cn
.CommandText = "ObjOwner.Package.functionName"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter(, adVarChar, adParamOutput, 2000, 10) 'Ev feltext
.Parameters.Append .CreateParameter(, adVarChar, adParamInput, 60) 'wo_no
.Parameters.Append .CreateParameter(, adVarChar, adParamInput, 60) 'emp_no
.Parameters.Append .CreateParameter(, adVarChar, adParamInput, 60) 'hours
End With

CPw2(1) = WO_NO
CPw2(2) = Format(EMP_NO, ">")
CPw2(3) = HOURS
CPw2.Execute
</code>
Alla rader ovan, fram till CPw2.Execute, går givetvis blixtsnabbt.

CPw2.Execute går för långsamt.
Man kan då givetvis dra slutsatsen att proceduren är felaktig i Oracle.
Men om man kör samma procedur från Oracle:s egna verktyg PL-SQL, går det betydligt snabbare.

Just exemplet ovan går inte så långsamt, jag tog just det exemplet för att visa hur jag kör en oracleprocedur.
Jag har andra procedurer som tar ca 2 sekunder på ovanstående sätt, men tar ca 0,2 sekunder från PL-SQL.
PL-SQL kan väl jämföras med SQL-serverns Query-analyser.
Om man från access vill uppdatera 20.000 poster i en SQL-tabell, tar det många sekunder.
Om man kör samma fråga från Query-analysern, tar det max någon sekund.

Dvs gemensam (seg) nämnare är väl ODBC.
Finns det något annat sätt att köra en oracleprocedur från Access än ovanstående via ODBC?
Något sätt som liknar att köra en fråga mot en SQL-server via Query-analyser isf via ODBC.
(Jag har även testat med Oracles egna ODBC-rutin, men med samma långsamma resultat)
/ Mikael


Svara

Sv: Oracleprocedurer från Access (VB6)

Postades av 2005-10-03 16:07:50 - Mikael Wedham

Du använder:
Access
Oracle
VB6 ? (är det inte VBA i Access...)

och ditt inlägg finns i Microsoft SQL Server forumet...

/micke


Svara

Sv:Oracleprocedurer från Access (VB6)

Postades av 2005-10-04 10:56:53 - Mikael Gustavsson

Helt rätt, det finns inget Oracle-forum.
Men detta berör även SQL-server.
Samma seghet via ODBC gäller även där.


Om det är Oracle eller SQL, VB6 eller Access spelar ingen roll.
Samma kodning, samma problem.
Jag tror att det finns bäst kompetens gällande detta, i detta forum.


/ Mikael


Svara

Sv: Oracleprocedurer från Access (VB6)

Postades av 2005-10-05 17:08:32 - Mikael Wedham

Men då har du ju eliminerat Oracle/SQL från det hela :)

ODBC är ju inte känt för att vara snabbt...

/micke


Svara

Sv:Oracleprocedurer från Access (VB6)

Postades av 2005-10-07 20:31:59 - Per Karlsson

Testa att byta driver när du kör mot sql server. ODBC-drivern är inte lika snabb som sql server-drivern. Se om det ger resultat.

Andra saker jag såg när jag kollade på koden:
wo_no och hours ska väl inte skickas in som varchar till proceduren? Int skulle passa bättre eftersom de är av datatypen long.
Dessutom tycker jag att det är lite konstigt (och förmodligen prestandakrävande) att returnera en feltext som kan vara upp till 2000 tecken lång. En snyggare lösning är att ta hand om procedurens returvärde som i sql server är en int (vet dock ej om detta funkar i Oracle).

/Pelle


Svara

Sv: Oracleprocedurer från Access (VB6)

Postades av 2005-10-09 11:43:18 - Mikael Gustavsson

Som du mycket riktigt påpekar är inte varabeltyperna optimala.
Men problemet ligger inte där.
Om jag stegar koden, så ser man att segheten kommer vid .execute (som förväntat givetvis).
Om man kör samma kod via plSQL, går det betydligt snabbare.
Dvs själva funktionen i Oracle går snabbare via plSQL.
plSQL kan nog jämföras med QueryAnalysern mot SQL-server.
All kod exekveras lokalt på servern (?).
Jag antar att msjet då inte är inblandad.
Kan jag kommunicera med en OracleDB på annat sätt än via ODBC från Access, och då slitta msjet?

Du nämner sql-driver mot SQL-server, hur funkar det, var hittar man den?
Finns liknande driver för Oracle?

/ Mikael


Svara

Sv:Oracleprocedurer från Access (VB6)

Postades av 2005-10-10 12:57:14 - Mikael Wedham

Det finns med all säkerhet en OLEDB drivrutin även för Oracle, som du kan använda från Access.

Där du väljer hur du connectar dig, kan du säkert uppdatera från DSN till det du skall ha.

/micke


Svara

Sv: Oracleprocedurer från Access (VB6)

Postades av 2005-10-12 13:00:54 - Mikael Gustavsson

Låter som en framkomlig lösning.
Tyvärr vet jag inget om detta.
Har du något exempel på hur det skulle se ut?
Var kan man hitta en OLEDB-driver?

hittade detta
http://www.orafaq.com/faqmsvb.htm

/ Mikael


Svara

Sv:Oracleprocedurer från Access (VB6)

Postades av 2005-10-12 13:57:59 - Mikael Wedham

www.connectionstrings.com

har jag inte kollat i själv, men det är en vanlig länk när man vill börja laborera med OLEDB.

/micke


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
381
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies