je vais mettre le code en résumé, en effet il ne faut pas confondre "table de résultats" et "table contenant les résultats de la requête sur la table de résultats"
1-connexion à une base de données db1.mdb (contenant des patterns de phrases)
2-création de la table "résultats" qui contient les résultats bruts
Set oCatalog = New adox.Catalog
oCatalog.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nameDicoMod & ";"
Set oTable = New adox.Table
With oTable
.Name = "Resultats"
With .Columns
.Append "Texte", adVarWChar
.Append "Enonce", adVarWChar
.Append "Signification", adVarWChar
.Append "ValeurARenvoyer", adVarWChar
.Append "Freqdens", adSmallInt
End With
End With
oCatalog.Tables.Append oTable
3-connexion à la base db2.mdb (qui va contenir les résultats)
je ne comprends pas pourquoi table "résultats" peut être créée avant la connexion, je me disais que c'était le recordset qui s'en chargeait
Set cnxOutput = New ADODB.Connection
cnxOutput.Provider = "Microsoft.Jet.Oledb.4.0"
cnxOutput.ConnectionString = App.Path & "\MesOutputs\Output.mdb"
cnxOutput.Open
4-traitement:
connexion avec db3.mdb (contenant des mots)
comparaison d'un texte avec db1 et db3
update de la table "résultats" sur db2 en utilisant les résultats du traitement et des données de db1
rs.AddNew: rs.Fields(0) = sInputFile
rs.Fields(1) = posenonce
rs.Fields(2) = rsCombi("Signification")
rs.Fields(3) = rsCombi("ValeurARenvoyer")
fin du traitement
5-création de la table "Stat" qui contient les résultats d'une requête sur la table "résultats"
ce code marche s'il est placé avant la connexion à db2 mais pas ici, cad que le recordset ne s'ouvre pas quand le code est ici
or je dois le mettre ici pour définir dynamiquement les colonnes sur base de table "résultats" que j'obtiens après le traitement
Set oTableStat = New adox.Table
oTableStat.Name = "Stat"
oTableStat.Columns.Append "Texte", adVarWChar
oTableStat.Columns.Append "Enonc", adVarWChar
oCatalog.Tables.Append oTableStat
6-requête
reqStates = "TRANSFORM Count(Auto.ValeurARenvoyer) AS CompteDeValeurARenvoyer"
reqStates = reqStates & " SELECT Auto.Texte, Auto.Enonce"
reqStates = reqStates & " From Auto"
reqStates = reqStates & " GROUP BY Auto.Texte, Auto.Enonce"
reqStates = reqStates & " PIVOT Auto.Signification;"
rsReq.Open reqStates, cnxOutput, adOpenKeyset, adLockPessimistic
7-le recordset ne s'ouvre pas quand le code de la table "Stat" est placé avant la connexion à db2
'cependant la table "Stat" est créée dans les 2 cas
rsStat.Open "SELECT * FROM " & "Stat" & " ;", cnxOutput, adOpenKeyset, adLockPessimistic
merci de l'aide