Base de données Access et pages web dynamiques, j'y arrive pas !

Base de données Access et pages web dynamiques, j'y arrive pas ! - Win NT/2K/XP - Windows & Software

Marsh Posté le 09-10-2003 à 13:56:24    

Voilà, je dois faire un site se basant sur des tonnes de données qui sont déjà rentrées sous Access, et il y a de celà quelques années, j'avais vu en cours que l'on pouvait créer des pages web dynamiques pour la consultation (voire même recherche) sur cette base de données.
 
J'ai donc repris mes petits cours et navigué un peu sur le net pour m'y remettre mais après quelques heures dessus, quelque chose m'est revenu : la source de données ODBC.
 
J'ai tenté de configuré çà a peu pres mais apres avoir mis en ligne, çà ne marche toujours pas. Plus inquiétant çà ne marche même pas en local sur mon pc quand j'exporte juste en ASP ou IDC/HTX. Ma requête est pourtant simple (afficher juste les NOMS de la colonne NOMS triés par ordre croissant...) La requête marche pourtant sous access.
 
Je me souviens que mon prof ne nous parlait pas de ces sources de données ODBC, d'ailleurs il voulait pas qu'on y touche...
 
Donc voilà, si des pros des bases de données en ligne pouvaient me venir en aide çà serait super sympa  :)


Message édité par slanngolf le 09-10-2003 à 13:58:59
Reply

Marsh Posté le 09-10-2003 à 13:56:24   

Reply

Marsh Posté le 09-10-2003 à 14:03:46    

Sous Access Fichier -> Exporter -> Choisir dans la liste "ASP"
 
Je n'ai jamais testé, il te faut probablement IIS pour faire tourner ces pages...


Message édité par Requin le 09-10-2003 à 14:03:58
Reply

Marsh Posté le 09-10-2003 à 14:42:10    

merci je sais comment exporter ;) c juste que je pige rien a l'ODBC et IIS :(

Reply

Marsh Posté le 09-10-2003 à 14:54:41    

Donc mauvais forum, voir dans programmation, voici mon code source que j'utilise pour me connecter à des DB Access en ASP 3.0... il faut lui passer une string de connexion valide avec le chemin de la DB et c'est à peu près tout. De préférence j'utilise le provider OLEDB.
 
Voici à quoi ressemble l'appel dans le code :

Code :
  1. Set objDB = New DBCONNClass
  2.    Set objConn = objDB.Open(cfgDBAbsFilePath, cfgDBString, "", "", "" )


 
Voici le contenu des variables de l'appel ci-dessus (fichier de configuration) :

Code :
  1. ' database
  2. cfgDBPath = "../database/"
  3. cfgDBFile = "database.mdb"
  4. cfgDBRelFilePath = cfgDBPath & cfgDBFile
  5. cfgDBAbsFilePath = Server.Mappath(cfgDBRelFilePath)
  6. cfgDBString  = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
  7.                "Data Source= " & cfgDBAbsFilePath & ";"


 
Voici la classe pour gérer mes connexions :

Code :
  1. <%
  2.    ' /// Manual ///
  3.    ' Pop()
  4.    '     Desc   : get current connection
  5.    '     Pass   : nothing
  6.    '     Return : an ADODB.Connection object; If there is no connection set,
  7.    '              return "Nothing"
  8.    ' Open(l_strDBAbsFilePath, l_strDBConnString, l_strDBUser, _
  9.    '      l_strDBPassword, l_strDBOptions)
  10.    '     Desc   : open a connection to a database using a DSN less method
  11.    '     Pass   : l_strDBAbsFilePath = a string, absolute file path to DB
  12.    '              l_strDBConnString  = a string, provider...
  13.    '              l_strDBUser        = a sring, user (may be an empty string)
  14.    '              l_strDBPassword    = a string, password (empty str)
  15.    '              l_strDBOptions     = a string, options (empty str)
  16.    '     Return : current connection object, OR "Nothing"
  17.    ' Close()
  18.    '     Desc   : close connection to database
  19.    '     Pass   : nothing
  20.    '     Return : a boolean, True If transaction was sucessfull
  21.    ' ExecuteRS(strStatement)
  22.    '     Desc   : execute a statement AND return a recordset
  23.    '     Pass   : strStatement       = a string, SQL statement like SELECT
  24.    '     Return : an ADODB.RecordSet object OR nothing If failed
  25.    ' ExecuteNORS(strStatement)
  26.    '     Desc   : execute a statement AND don't return a recordset
  27.    '     Pass   : strStatement       = a string, SQL statement like DELETE
  28.    '     Return : True If there was no errors, False otherwise
  29.    ' GetID()
  30.    '     Desc   : get an auto-incremented value from the database
  31.    '     Pass   : nothing
  32.    '     Return : Unique ID... type set on the database
  33. Class DBCONNClass
  34.    ' for storing object reference
  35.    Private l_objConn
  36.    '
  37.    ' get current connection
  38.    Public Function Pop()
  39.       If IsObject(objStoreConn) Then
  40.          Set Pop = l_objConn
  41.       Else
  42.          Set Pop = Nothing
  43.       End If
  44.    End Function
  45.  
  46.    '
  47.    ' Connect to the database
  48.    Public Function Open(                                                     _
  49.                            l_strDBAbsFilePath                              , _
  50.                            l_strDBConnString                               , _
  51.                            l_strDBUser                                     , _
  52.                            l_strDBPassword                                 , _
  53.                            l_strDBOptions                                    _
  54.                         )
  55.      
  56.       ' local variables
  57.       Dim l_strOpenString
  58.       Dim l_strOpenUser
  59.       Dim l_strOpenPassword
  60.       Dim l_strOpenOptions
  61.       Dim l_boolError
  62.      
  63.       l_boolError = False
  64.      
  65.       ' Instantiate ADO COM Object
  66.       Set l_objConn = Server.Createobject("ADODB.Connection" )
  67.      
  68.       ' Check connection string parameter
  69.       If (VarType(l_strDBConnString) <> vbError) AND _
  70.          (l_strDBConnString <> "" ) Then
  71.          ' Set connection string using parameter
  72.          l_strOpenString = l_strDBConnString
  73.       Else
  74.          ' Error
  75.          l_boolError = True
  76.       End If
  77.       ' Check user parameter
  78.       If (VarType(l_strDBUser) <> vbError) Then
  79.          ' Set user using parameter
  80.          l_strOpenUser = l_strDBUser
  81.       Else
  82.          ' Error
  83.          l_boolError = True
  84.       End If
  85.       ' Check password parameter
  86.       If (VarType(l_strDBPassword) <> vbError) Then
  87.          ' Set password using parameter
  88.          l_strOpenPassword = l_strDBPassword
  89.       Else
  90.          ' Error
  91.          l_boolError = True
  92.       End If
  93.       ' Check options parameter
  94.       If (VarType(l_strDBUser) <> vbError) Then
  95.          ' Set options using parameter
  96.          l_strOpenOptions = l_strDBOptions
  97.       Else
  98.          ' Error
  99.          l_boolError = True
  100.       End If
  101.       ' Open Connection to database
  102.       If (l_strOptions <> "" )      AND _
  103.          (l_strOpenUser <> "" )     AND _
  104.          (l_strOpenPassword <> "" ) Then
  105.        
  106.          l_objConn.Open l_strOpenString     , _
  107.                         l_strOpenUser       , _
  108.                         l_strOpenPassword   , _
  109.                         l_strOpenOptions
  110.       ElseIf (l_strOpenUser <> "" )     AND _
  111.              (l_strOpenPassword <> "" ) Then
  112.        
  113.          l_objConn.Open l_strOpenString     , _
  114.                         l_strOpenUser       , _
  115.                         l_strOpenPassword
  116.       ElseIf (l_strOpenOptions <> "" ) Then
  117.        
  118.          l_objConn.Open l_strOpenString     , _
  119.                         l_strOpenOptions
  120.       Else
  121.          l_objConn.Open l_strOpenString
  122.       End If
  123.       ' Begin an ADO MTS transaction
  124.       l_objConn.BeginTrans
  125.       ' check for errors
  126.       If l_boolError Then
  127.          Set Open = Nothing
  128.       Else
  129.          ' Returns Opened connection object
  130.          Set Open = l_objConn
  131.       End If
  132.    End Function
  133.    '
  134.    ' Close connection to database
  135.    Public Function Close()
  136.       Dim l_boolError
  137.       l_boolError = False
  138.       ' Check for errors
  139.       If l_objConn.Errors.Count = 0 Then
  140.          ' Commit transaction If there are no errors
  141.          l_objConn.CommitTrans
  142.       Else
  143.          ' Display errors
  144.          Response.Write(l_objConn.Errors.Count & " error(s) : <br>" )
  145.          For i = 0 To (l_objConn.Errors.Count-1)
  146.             Response.Write("<a>Error " & i+1 & " )</a>" )
  147.             Response.Write("<ul>" )
  148.              Response.Write("<li>Description : " )
  149.             Response.Write(l_objConn.Errors(i).Description)
  150.             Response.Write("<li>HelpContext : " )
  151.             Response.Write(l_objConn.Errors(i).HelpContext)
  152.             Response.Write("<li>HelpFile : " )
  153.             Response.Write(l_objConn.Errors(i).HelpFile)
  154.             Response.Write("<li>NativeError : " )
  155.             Response.Write(l_objConn.Errors(i).NativeError)
  156.             Response.Write("<li>Number : " )
  157.             Response.Write(l_objConn.Errors(i).Number)
  158.             Response.Write("<li>Source : " )
  159.             Response.Write(l_objConn.Errors(i).Source)
  160.             Response.Write("<li>SQLState : " )
  161.             Response.Write(l_objConn.Errors(i).SQLState)
  162.             Response.Write("</ul>" )
  163.          Next
  164.          ' Rollback transaction If there are errors
  165.          l_objConn.RollbackTrans
  166.          l_boolError = True
  167.       End If
  168.       ' Free memory
  169.       Set l_objConn = Nothing
  170.       ' check for errors
  171.       If l_boolError Then
  172.          Close = False
  173.       Else
  174.          Close = True
  175.       End If
  176.    End Function
  177.    '
  178.    ' Execute using current connection AND return a recordset
  179.    Public Function ExecuteRS(strStatement)
  180.       If VarType(strStatement) <> vbError                                AND _
  181.          strStatement <> ""                                              AND _
  182.          IsObject(l_objConn)                                             Then
  183.          ' execute adCmdText
  184.          Set ExecuteRS = l_objConn.Execute(strStatement, ,1)
  185.       Else
  186.          Set ExecuteRS = Nothing
  187.       End If
  188.    End Function
  189.    '
  190.    ' Execute using current connection AND don't return a recordset
  191.    Public Function ExecuteNORS(strStatement)
  192.       If VarType(strStatement) <> vbError                                AND _
  193.          strStatement <> ""                                              AND _
  194.          IsObject(l_objConn)                                             Then
  195.          ' execute adCmdText + adExecuteAsync
  196.          l_objConn.Execute strStatement, , 129
  197.       End If
  198.       If l_objConn.Errors.Count = 0 Then
  199.          ExecuteNORS = True
  200.       Else
  201.          ExecuteNORS = False
  202.       End If
  203.    End Function
  204.    '
  205.    ' Get unique ID of a freshly inserted recordset
  206.    ' DO NOT WORK WITH REPLICATION ID (GUID)
  207.    Public Function GetID()
  208.       l_strSQL = "SELECT @@Identity"
  209.       Set l_objRS = Server.CreateObject("ADODB.Recordset" )
  210.       l_objRS.Open l_strSQL, l_objConn, 0, 1, 1 'forward only, readonly, cmd
  211.       If Not(l_objRS.BOF AND l_objRS.EOF) Then
  212.          varID = l_objRS(0).Value
  213.       Else
  214.          varID = ""
  215.       End If
  216.       l_objRS.Close
  217.       If varID <> "" Then
  218.          GetID = varID
  219.       Else
  220.          GetID = False
  221.       End If
  222.    End Function
  223. End Class
  224. %>


Message édité par Requin le 09-10-2003 à 14:56:54
Reply

Marsh Posté le 09-10-2003 à 14:59:09    

oulala ! ils ont pas pensés a faire plus simple ? me dit pas quil faut etre programmeur pour mettre en ligne une chtite base de données avec qq pages dynamiques chez multimania ? :(
 
 
bon, jy retourne...

Reply

Marsh Posté le 09-10-2003 à 15:07:31    

Faut savoir ce que tu veux faire...
 
Chez multimania ??? Tu es sûr qu'un hébergeur gratuit te fournit ce dont tu as besoin en ASP ? Cela m'étonnerait bcp !
 
Ca c'est mon code justement pour me simplifier la vie ;)
 
Après c'est open() -> executers() ou executenors() -> close() et le reste c'est de la présentation.
 
Sinon l'outils de publication Web intégré à Access devrait permettre de faire le nécessaire et générer le code en question, mais comme je te l'ai djà dit je ne'ai pas testé cette méthode.

Reply

Marsh Posté le 09-10-2003 à 15:17:38    

Mais comment font ils alors les "petits" sites avec un moteur de recherche ? ou meme un livre d'or, çà va bien vers une BDD ?

Reply

Marsh Posté le 09-10-2003 à 15:26:53    

Apache / PHP / MySQL c'est bien plus abordable comme solution et il existe de nombreux codes sources libres et disponibles. Celà n'empêche pas de programmer un petit peu. Pour l'hébergement certains proposent du gratuit (free par exemple propose le support PHP), mais ils sont généralement pas très performants (pour ne pas dire lents) et nombres de personnes prennent un hébergement payant OVH, Infomaniak, etc pour avoir la rapidité d'exécution.
 
Pour utiliser IIS / ASP / Access il faudrait en théorie :
- licence Windows Server 2000 ou 2003 Edition Internet
- licence Office Edition Développeur (ou les MSDNs)
Ce qui met la barre assez loin pour de petits sites.


Message édité par Requin le 09-10-2003 à 15:28:22
Reply

Marsh Posté le 09-10-2003 à 15:39:12    

ben écoute je te remercie pour toutes ces précisions.
 
jil va m'entendre celui qui m'a dit de mettre tout çà sur access en tous cas ;)

Reply

Marsh Posté le 09-10-2003 à 17:05:01    

Bah tu peux exporter depuis access en fichier CSV tes tables et importer les données sur la base MySQL de l'hébergeur, ca ne pose pas trop de soucis...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed