Voici un bout de code qui fonctionnait bien avec un autre table... En
modifiant la structure de ma base de donnée, J'ai scindé la première table
pour concerver et surtout respecter l'intégrité référentiel des données...
Soit je lis un fichier texte pour en ressortitr les données et les placées
dans ma base de donnée... Je fais une première vérification dans la table
"TestVsF" si la Session n'a pas été lue encore (findfirst et nomatch). Bien
sur le champs "Session" est indexé avec doublons.
Donc je lis les lignes les lignes jusqu'à la ligne qui contient "SessionID".
J'en extrais le numéro de la session et le passe à la fonction
fCurrent.FindFirst (LaDate) (EX.: LaDate= "Session='673'").
J'obtiens un message d'erreur #3251: Opération non autorisée pour ce type
d'objet.
Quelques suggestions!!!???
Merci à l'avance
Set dbsCurrent = CurrentDb
Set tbCurrent = dbsCurrent.TableDefs![TubVsF]
Set rsdCurrent = tbCurrent.OpenRecordset
Set tfCurrent = dbsCurrent.TableDefs![TestVsF]
Set fCurrent = tfCurrent.OpenRecordset
Open SSNfile For Input As #1
i = 1
x = 1
Debug.Print SSNfile, i
Do While Not EOF(1)
PasOK = True
Line Input #1, Ligne
Debug.Print Ligne, i
If InStr(Ligne, "SessionID") <> 0 Then
TxtL = InStr(Ligne, "=")
SessionID = Mid(Ligne, TxtL + 1)
Debug.Print Ligne, SessionID, "TxtL= "; TxtL
LaDate = "Session='" & SessionID & "'"
Debug.Print LaDate
fCurrent.FindFirst (LaDate)
If Not fCurrent.NoMatch Then ...
....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour Michel,
Sauf erreur de ma part, tu appliques la méthode FindFirst sur un recordset de type Table et ca ne marche pas. Il faut que tu ouvres ton recordset sur la table en mode dbOpenDynaset(feuille de réponse dynamique) et non dbOpenTable, ce qui est le cas par défaut si la source est une table et que le type de jeu d'enregistrements n'est pas précisé.
A adapter : Dim tfcurrent As String tfcurrent = dbscurrent.TableDefs![TestVsF].Name set fcurrent= dbscurrent.OpenRecordset(tfCurrent,dbOpenDynaset)
Une autre solution puisque la table est indéxée serait d'utiliser la méthode Seek.
Bonjour à tous,
Voici un bout de code qui fonctionnait bien avec un autre table... En modifiant la structure de ma base de donnée, J'ai scindé la première table pour concerver et surtout respecter l'intégrité référentiel des données...
Soit je lis un fichier texte pour en ressortitr les données et les placées dans ma base de donnée... Je fais une première vérification dans la table "TestVsF" si la Session n'a pas été lue encore (findfirst et nomatch). Bien sur le champs "Session" est indexé avec doublons.
Donc je lis les lignes les lignes jusqu'à la ligne qui contient "SessionID". J'en extrais le numéro de la session et le passe à la fonction fCurrent.FindFirst (LaDate) (EX.: LaDate= "Session='673'").
J'obtiens un message d'erreur #3251: Opération non autorisée pour ce type d'objet.
Quelques suggestions!!!???
Merci à l'avance
Set dbsCurrent = CurrentDb Set tbCurrent = dbsCurrent.TableDefs![TubVsF] Set rsdCurrent = tbCurrent.OpenRecordset Set tfCurrent = dbsCurrent.TableDefs![TestVsF] Set fCurrent = tfCurrent.OpenRecordset Open SSNfile For Input As #1 i = 1 x = 1 Debug.Print SSNfile, i Do While Not EOF(1) PasOK = True Line Input #1, Ligne Debug.Print Ligne, i If InStr(Ligne, "SessionID") <> 0 Then TxtL = InStr(Ligne, "=") SessionID = Mid(Ligne, TxtL + 1) Debug.Print Ligne, SessionID, "TxtL= "; TxtL LaDate = "Session='" & SessionID & "'" Debug.Print LaDate fCurrent.FindFirst (LaDate) If Not fCurrent.NoMatch Then ... ....
Michel
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour Michel,
Sauf erreur de ma part,
tu appliques la méthode FindFirst sur un recordset de type Table et ca
ne marche pas. Il faut que tu ouvres ton recordset sur la table en mode
dbOpenDynaset(feuille de réponse dynamique) et non dbOpenTable, ce qui
est le cas par défaut si la source est une table et que le type de jeu
d'enregistrements n'est pas précisé.
A adapter :
Dim tfcurrent As String
tfcurrent = dbscurrent.TableDefs![TestVsF].Name
set fcurrent= dbscurrent.OpenRecordset(tfCurrent,dbOpenDynaset)
Une autre solution puisque la table est indéxée serait d'utiliser la
méthode Seek.
Bonjour à tous,
Voici un bout de code qui fonctionnait bien avec un autre table... En
modifiant la structure de ma base de donnée, J'ai scindé la première table
pour concerver et surtout respecter l'intégrité référentiel des données...
Soit je lis un fichier texte pour en ressortitr les données et les placées
dans ma base de donnée... Je fais une première vérification dans la table
"TestVsF" si la Session n'a pas été lue encore (findfirst et nomatch). Bien
sur le champs "Session" est indexé avec doublons.
Donc je lis les lignes les lignes jusqu'à la ligne qui contient "SessionID".
J'en extrais le numéro de la session et le passe à la fonction
fCurrent.FindFirst (LaDate) (EX.: LaDate= "Session='673'").
J'obtiens un message d'erreur #3251: Opération non autorisée pour ce type
d'objet.
Quelques suggestions!!!???
Merci à l'avance
Set dbsCurrent = CurrentDb
Set tbCurrent = dbsCurrent.TableDefs![TubVsF]
Set rsdCurrent = tbCurrent.OpenRecordset
Set tfCurrent = dbsCurrent.TableDefs![TestVsF]
Set fCurrent = tfCurrent.OpenRecordset
Open SSNfile For Input As #1
i = 1
x = 1
Debug.Print SSNfile, i
Do While Not EOF(1)
PasOK = True
Line Input #1, Ligne
Debug.Print Ligne, i
If InStr(Ligne, "SessionID") <> 0 Then
TxtL = InStr(Ligne, "=")
SessionID = Mid(Ligne, TxtL + 1)
Debug.Print Ligne, SessionID, "TxtL= "; TxtL
LaDate = "Session='" & SessionID & "'"
Debug.Print LaDate
fCurrent.FindFirst (LaDate)
If Not fCurrent.NoMatch Then ...
....
Michel
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Sauf erreur de ma part, tu appliques la méthode FindFirst sur un recordset de type Table et ca ne marche pas. Il faut que tu ouvres ton recordset sur la table en mode dbOpenDynaset(feuille de réponse dynamique) et non dbOpenTable, ce qui est le cas par défaut si la source est une table et que le type de jeu d'enregistrements n'est pas précisé.
A adapter : Dim tfcurrent As String tfcurrent = dbscurrent.TableDefs![TestVsF].Name set fcurrent= dbscurrent.OpenRecordset(tfCurrent,dbOpenDynaset)
Une autre solution puisque la table est indéxée serait d'utiliser la méthode Seek.
Bonjour à tous,
Voici un bout de code qui fonctionnait bien avec un autre table... En modifiant la structure de ma base de donnée, J'ai scindé la première table pour concerver et surtout respecter l'intégrité référentiel des données...
Soit je lis un fichier texte pour en ressortitr les données et les placées dans ma base de donnée... Je fais une première vérification dans la table "TestVsF" si la Session n'a pas été lue encore (findfirst et nomatch). Bien sur le champs "Session" est indexé avec doublons.
Donc je lis les lignes les lignes jusqu'à la ligne qui contient "SessionID". J'en extrais le numéro de la session et le passe à la fonction fCurrent.FindFirst (LaDate) (EX.: LaDate= "Session='673'").
J'obtiens un message d'erreur #3251: Opération non autorisée pour ce type d'objet.
Quelques suggestions!!!???
Merci à l'avance
Set dbsCurrent = CurrentDb Set tbCurrent = dbsCurrent.TableDefs![TubVsF] Set rsdCurrent = tbCurrent.OpenRecordset Set tfCurrent = dbsCurrent.TableDefs![TestVsF] Set fCurrent = tfCurrent.OpenRecordset Open SSNfile For Input As #1 i = 1 x = 1 Debug.Print SSNfile, i Do While Not EOF(1) PasOK = True Line Input #1, Ligne Debug.Print Ligne, i If InStr(Ligne, "SessionID") <> 0 Then TxtL = InStr(Ligne, "=") SessionID = Mid(Ligne, TxtL + 1) Debug.Print Ligne, SessionID, "TxtL= "; TxtL LaDate = "Session='" & SessionID & "'" Debug.Print LaDate fCurrent.FindFirst (LaDate) If Not fCurrent.NoMatch Then ... ....
Michel
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr