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

MySQL procedur från Access

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
Redigerad av Miky

Dela detta inlägg


Länk till inlägg
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

Dela detta inlägg


Länk till inlägg
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.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...