Just nu i M3-nätverket
Gå till innehåll

MySQL procedur från Access


Miky

Rekommendera Poster

Mitt mål är att köra en SQL-sats som finns i en procedur på min mySQL från min Access och visa resultatet i en Access-rapport.
 
Har mySQL som en backend och Access som frontend.
I mySQL så har jag en tabell där en massa info om körpass lagras. (Proceduren finns längre ner.) Då den innehåller variabler så kunde jag inte lagra den som en View i mySQL. Men Access kan enbart se Tables och Views, inte Procedures.

 

Med macro så har jag lyckats att komma åt så pass att jag kan köra en Procedure. Men hur ska jag kunna komma åt resultatet som den lämnar och presentera detta i en Access-rapport?

För att köra en procedur med macro från Access:    
    Dim objRec
    Dim objConn
    Dim cmdString
    
    Set objRec = CreateObject("ADODB.Recordset")
    Set objConn = CreateObject("ADODB.Connection")
    
    objConn.ConnectionString = "DRIVER={MySQL ODBC 5.3 Unicode Driver}; SERVER=127.0.0.1; DATABASE=db;UID=[user];PASSWORD=[pwd]; OPTION=3"
    objConn.Open
    
    cmdString = "CALL generateKörpassen()"
    Set objRec = objConn.Execute(cmdString)
    
    objConn.Close
Min Procedur i mySQL som jag vill köra från Access och presentera resultatet
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_korpass`()
BEGIN
SELECT	K.korpass_ID,
    K.korpass_bilID,
    K.korpass_lopnummer,
	K.korpass_datum,
    K.korpass_arbStart,

    if(k.korpass_bilID=@lastBilID,Cast((K.korpass_lopnummer - @lastLopnummer) as unsigned integer),0) as check_lopnummer, 
   
	@lastLopnummer := K.korpass_lopnummer,
    @lastBilID := CAST(K.korpass_bilID as unsigned integer)
    
FROM db.körpassen K,
	(select @lastLopnummer := 0, @lastBilID := 0) SQLVars
order by K.korpass_bilID,K.korpass_arbStart;
END
Länk till kommentar
Dela på andra webbplatser

Resultatet blir väl ett recordset (i objektet objRec) som du kan använda på lämpligt sätt?

Dim objRec
Dim objConn
Dim cmdString

Set objRec = CreateObject("ADODB.Recordset")
Set objConn = CreateObject("ADODB.Connection")

objConn.ConnectionString = "DRIVER={MySQL ODBC 5.3 Unicode Driver}; SERVER=127.0.0.1; DATABASE=db;UID=[user];PASSWORD=[pwd]; OPTION=3"
objConn.Open

cmdString = "CALL generateKörpassen()"
Set objRec = objConn.Execute(cmdString)

If Not objRec.EOF Then
   Do Until objRec.EOF
      ' Här loopas recordset igenom och du borde kunna göra vad du vill med resultatet
   Loop
End If

Set objRec = Nothing
Set objConn = Nothing

objConn.Close
Länk till kommentar
Dela på andra webbplatser

Har problem med att få objRec till rapportens recordset så att den visar det jag vill.

Har försökt med kommandon liknande

Set Reports("Check_report").Recordset = rstCheck

Men får hela tiden ett felmeddelande:

Körfel nr '32585'.:
Den här funktionen är endast tillgänglig i en ADP.
Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...