none
Læse/Skrive i ekstern SQL-database

    Spørgsmål

  • Hej

    Jeg har behov for at læse fra og skrive til en SQL-database fra C5-kode.

    Jeg har set det gjort før, men jeg kan ikke finde kodestumpen.

    Hvordan gør man det?

    mvh

    Torben Hansen

    28. september 2011 11:31

Alle besvarelser

  • Via ODBC. Se de funktionskald, der starter med ODBC.

    Det er nok lidt omfattende at gennemgå samtlige funktioner her :-).

    Hvis du vil skrive direkte til C5s SQL-database og kører C5 på SQL, så er der også direkte SQL-funktioner til det. Men er det en anden SQL-database (eller kører du ikke C5 på SQL), så vil jeg tro du skal via ODBC-kaldene.

    MVH

    gsl(at)systemconnect.dk


    MVH gsl (at) systemconnect.dk
    28. september 2011 13:57
  • Hej Torben,

    Som Gert også skriver, kan det være lidt omstændigt at skrive et helt eksempel her, men her har du en kodestump til at læse:

    SET &H = ODBCLogon(&ODBCDSN,&ODBCUID,&ODBCPWD,&ODBCParm)
    IF NOT &H THEN
        #Abort("Forbindelse til ODBC datakilden kunne ikke oprettes")
    ENDIF

    WINDOW 75,3 AT 10,20
    PRINT "Kreditoroverførsel til Access" AT -1,-1
    PRINT #StrPrompt("Finder IDs på Kreditorgrupper",32) AT 1,1
    SEARCH VendGroup USING GroupIdx
        SET &TextSt = VendGroup.GroupName
        #TxtConv(&TextSt)
        SET ODBCPREPARE('SELECT E_id FROM Entreprise WHERE [Navn] = \''+&TextSt+'\'')
        SET &S = ODBCParse(&H,'')
        IF &S THEN
            WHILE ODBCInfo(&H,&S,11,0) //Så længe der er poster i SELECT
                SET &E_id = ODBCInfo(&H,&S,0,1) //1 tallet til sidst angiver feltnummeret i min select
                IF &E_id THEN
                    INTRODUCE TmpPayment
                    SET TmpPayment.Session  = &Session
                    SET TmpPayment.Id       = VendGroup.Group
                    SET TmpPayment.Name     = &E_id
                    INSERT TmpPayment
                ENDIF
            END
        ENDIF
    END

     

    Mvh.

    Mads

    30. september 2011 08:39