voici mon probl=E8me
je r=E9cup=E8re les donn=E9es qui sont cod=E9es d'une colonne de=20
ma table, et je veux les modifier j'utilise un select case
mais =E7a ne marche pas pouquoi?
voici mon pgm :
Option Compare Database
Dim car As String
Function recherche(latable As String)
' Fait le 31/10/03
' objet : recherche les =E9l=E9ments de la rubrique TYPE de la=20
table latable
' Declaration de variable
Dim C1 As Integer
Dim recup As String
Dim ref2 As String
Dim cnnCtoir As New ADODB.Connection
Dim rstCtoir As New ADODB.Recordset
=20
=20
'-----------------------------------
' Ouverture de la connection
With cnnCtoir
.Provider =3D "Microsoft.Jet.OLEDB.4.0"
.Open "c:\dev\ADO_test.mdb"
End With
'-----------------------------------
=20
' Construction de la requete sql ramenant tout la=20
table Latable
With rstCtoir
Set .ActiveConnection =3D cnnCtoir
.CursorType =3D adOpenKeyset
.LockType =3D adLockOptimistic
.Source =3D strSQL
.Open
End With
'------------------------------------------------------
-
=20
'Recherche des types de variables
=20
C1 =3D 0
While C1 <=3D rstCtoir.Fields.Count - 1
recup =3D rstCtoir.Fields(C1).Type
Debug.Print rstCtoir.Fields(C1).Type
'rstCtoir.Fields(C1).Name & ";" & rstCtoir.Fields
(C1).Type & ";" & latable & ";"
a =3D modif(recup, "STRUCTURE_TABLE")
C1 =3D C1 + 1
Wend
'---------------------------------------
=20
'lib=E9ration des variables objets
rstCtoir.Close
cnnCtoir.Close
'rstTemp.Close
Set cnnCtoir =3D Nothing
Set rstCtoir =3D Nothing
End Function
Function main()
' Fait le 31/10/03
' objet : fonction principale
Dim rstSchema As ADODB.Recordset
Dim strCnxn As String
'-------------------------------
Dim strSQL As String
Dim cnnCtoir As New ADODB.Connection
With cnnCtoir
.Provider =3D "Microsoft.Jet.OLEDB.4.0"
.Open "c:\dev\ADO_Test.mdb"
End With
'*******************
Set rstSchema =3D cnnCtoir.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
'Debug.Print "Table name: " & rstSchema!
TABLE_NAME & vbCr & "Table type: " & rstSchema!TABLE_TYPE=20
& vbCr
If rstSchema!TABLE_TYPE =3D "TABLE" Then
a =3D recherche(rstSchema!TABLE_NAME)
End If
rstSchema.MoveNext
Loop
ErrorHandler:
' clean up
If Not rstSchema Is Nothing Then
If rstSchema.State =3D adStateOpen Then=20
rstSchema.Close
End If
Set rstSchema =3D Nothing
If Not cnnCtoir Is Nothing Then
If cnnCtoir.State =3D adStateOpen Then cnnCtoir.Close
End If
Set cnnCtoir =3D Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" &=20
Err.Description, , "Error"
End If
End Function
Function modif(recup As String, Matablecible As String)
' Fait le 31/10/03
' objet : modification des donn=E9es cod=E9es de la rubrique=20
TYPE
' recup est la variable cod=E9e de la table STRUCTURE_TABLE
=20
'Declaration des variables
Dim C1 As Integer
Dim cnnCtoir As New ADODB.Connection
Dim rstTemp As New ADODB.Recordset
=20
'Ouverture de la connexion
With cnnCtoir
.Provider =3D "Microsoft.Jet.OLEDB.4.0"
.Open "c:\dev\ADO_test.mdb"
End With
'------------------
' Construction de la requete sql
=20
reqSQL =3D "SELECT * FROM [STRUCTURE_TABLE]"
'-----------------------------------
=20
' Cr=E9ation de l'objet recordset resCtoir + ouverture
With rstTemp
Set .ActiveConnection =3D cnnCtoir
.CursorType =3D adOpenKeyset
.LockType =3D adLockOptimistic
.Source =3D reqSQL
.Open
End With
'------------------------------------------
=20
'------------------------
'Modification des types de variables
=20
rstTemp.MoveFirst
'rstTemp.MoveNext
=20
var =3D LCase(recup)
Select Case var
Case "3"
recup =3D "nombre entier sign=E9 de quatre octets=20
(DBTYPE_I4)"
rstTemp.Update
Case "5"
recup =3D "valeur =E0 virgule flottante =E0 double=20
pr=E9cision (DBTYPE_R8)"
rstTemp.Update
Case "7"
recup =3D "valeur de date (DBTYPE_DATE)"
rstTemp.Update
Case "11"
recup =3D "valeur bool=E9enne (DBTYPE_BOOL)"
rstTemp.Update
Case "202"
recup =3D "cha=EEne de caract=E8res termin=E9e par=20
z=E9ro d'Unicode"
rstTemp.Update
Case "203"
recup =3D "chaine de valeur de type Long=20
termin=E9e par z=E9ro d'Unicode"
rstTemp.Update
End Select
=20
rstTemp.Update
rstTemp.Close
cnnCtoir.Close
'rstTemp =3D Nothing
'cnnCtoir =3D Nothing
End Function
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
Nicolas
A première vue, il ne semble pas que tu utilises la variable recup au sortir de ton select, peut être que le problème vient de là ... Je pense que tu as oublié d'affecter un des champs de ta table car dans le cas présent le rstTemp.Update que tu fais ne mets à jour aucune donnée, car aucune donnée de la table n'est affectée.
Bon courage
Nicolas
-----Message d'origine----- voici mon problème je récupère les données qui sont codées d'une colonne de ma table, et je veux les modifier j'utilise un select case mais ça ne marche pas pouquoi? voici mon pgm :
Option Compare Database
Dim car As String Function recherche(latable As String)
' Fait le 31/10/03 ' objet : recherche les éléments de la rubrique TYPE de
la
table latable
' Declaration de variable Dim C1 As Integer Dim recup As String Dim ref2 As String Dim cnnCtoir As New ADODB.Connection Dim rstCtoir As New ADODB.Recordset
'----------------------------------- ' Ouverture de la connection With cnnCtoir .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "c:devADO_test.mdb" End With '-----------------------------------
' Construction de la requete sql ramenant tout la table Latable
strSQL = "SELECT * FROM [" & latable & "]"
'-------------------------------------
' Création de l'objet recordset resCtoir + ouverture
With rstCtoir Set .ActiveConnection = cnnCtoir .CursorType = adOpenKeyset .LockType = adLockOptimistic .Source = strSQL .Open End With '-----------------------------------------------------
'libération des variables objets rstCtoir.Close cnnCtoir.Close 'rstTemp.Close Set cnnCtoir = Nothing Set rstCtoir = Nothing
End Function Function main() ' Fait le 31/10/03 ' objet : fonction principale Dim rstSchema As ADODB.Recordset Dim strCnxn As String
'------------------------------- Dim strSQL As String Dim cnnCtoir As New ADODB.Connection With cnnCtoir .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "c:devADO_Test.mdb" End With
'*******************
Set rstSchema = cnnCtoir.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF 'Debug.Print "Table name: " & rstSchema! TABLE_NAME & vbCr & "Table type: " & rstSchema!TABLE_TYPE & vbCr If rstSchema!TABLE_TYPE = "TABLE" Then a = recherche(rstSchema!TABLE_NAME) End If rstSchema.MoveNext Loop
ErrorHandler: ' clean up If Not rstSchema Is Nothing Then If rstSchema.State = adStateOpen Then rstSchema.Close End If Set rstSchema = Nothing
If Not cnnCtoir Is Nothing Then If cnnCtoir.State = adStateOpen Then
cnnCtoir.Close
End If Set cnnCtoir = Nothing
If Err <> 0 Then MsgBox Err.Source & "-->" & Err.Description, , "Error" End If
End Function
Function modif(recup As String, Matablecible As String) ' Fait le 31/10/03 ' objet : modification des données codées de la rubrique TYPE ' recup est la variable codée de la table STRUCTURE_TABLE
'Declaration des variables Dim C1 As Integer Dim cnnCtoir As New ADODB.Connection Dim rstTemp As New ADODB.Recordset
'Ouverture de la connexion With cnnCtoir .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "c:devADO_test.mdb" End With '------------------ ' Construction de la requete sql
reqSQL = "SELECT * FROM [STRUCTURE_TABLE]" '-----------------------------------
' Création de l'objet recordset resCtoir + ouverture With rstTemp Set .ActiveConnection = cnnCtoir .CursorType = adOpenKeyset .LockType = adLockOptimistic .Source = reqSQL .Open End With '------------------------------------------
'------------------------ 'Modification des types de variables
rstTemp.MoveFirst 'rstTemp.MoveNext
var = LCase(recup) Select Case var Case "3" recup = "nombre entier signé de quatre octets (DBTYPE_I4)" rstTemp.Update Case "5" recup = "valeur à virgule flottante à double précision (DBTYPE_R8)" rstTemp.Update Case "7" recup = "valeur de date (DBTYPE_DATE)" rstTemp.Update Case "11" recup = "valeur booléenne (DBTYPE_BOOL)" rstTemp.Update Case "202" recup = "chaîne de caractères terminée par zéro d'Unicode" rstTemp.Update Case "203" recup = "chaine de valeur de type Long terminée par zéro d'Unicode" rstTemp.Update End Select
rstTemp.Update rstTemp.Close cnnCtoir.Close 'rstTemp = Nothing 'cnnCtoir = Nothing End Function
.
A première vue, il ne semble pas que tu utilises la
variable recup au sortir de ton select, peut être que le
problème vient de là ... Je pense que tu as oublié
d'affecter un des champs de ta table car dans le cas
présent le rstTemp.Update que tu fais ne mets à jour
aucune donnée, car aucune donnée de la table n'est
affectée.
Bon courage
Nicolas
-----Message d'origine-----
voici mon problème
je récupère les données qui sont codées d'une colonne de
ma table, et je veux les modifier j'utilise un select case
mais ça ne marche pas pouquoi?
voici mon pgm :
Option Compare Database
Dim car As String
Function recherche(latable As String)
' Fait le 31/10/03
' objet : recherche les éléments de la rubrique TYPE de
la
table latable
' Declaration de variable
Dim C1 As Integer
Dim recup As String
Dim ref2 As String
Dim cnnCtoir As New ADODB.Connection
Dim rstCtoir As New ADODB.Recordset
'-----------------------------------
' Ouverture de la connection
With cnnCtoir
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open "c:devADO_test.mdb"
End With
'-----------------------------------
' Construction de la requete sql ramenant tout la
table Latable
strSQL = "SELECT * FROM [" & latable & "]"
'-------------------------------------
' Création de l'objet recordset resCtoir +
ouverture
With rstCtoir
Set .ActiveConnection = cnnCtoir
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = strSQL
.Open
End With
'-----------------------------------------------------
'libération des variables objets
rstCtoir.Close
cnnCtoir.Close
'rstTemp.Close
Set cnnCtoir = Nothing
Set rstCtoir = Nothing
End Function
Function main()
' Fait le 31/10/03
' objet : fonction principale
Dim rstSchema As ADODB.Recordset
Dim strCnxn As String
'-------------------------------
Dim strSQL As String
Dim cnnCtoir As New ADODB.Connection
With cnnCtoir
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open "c:devADO_Test.mdb"
End With
'*******************
Set rstSchema = cnnCtoir.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
'Debug.Print "Table name: " & rstSchema!
TABLE_NAME & vbCr & "Table type: " & rstSchema!TABLE_TYPE
& vbCr
If rstSchema!TABLE_TYPE = "TABLE" Then
a = recherche(rstSchema!TABLE_NAME)
End If
rstSchema.MoveNext
Loop
ErrorHandler:
' clean up
If Not rstSchema Is Nothing Then
If rstSchema.State = adStateOpen Then
rstSchema.Close
End If
Set rstSchema = Nothing
If Not cnnCtoir Is Nothing Then
If cnnCtoir.State = adStateOpen Then
cnnCtoir.Close
End If
Set cnnCtoir = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" &
Err.Description, , "Error"
End If
End Function
Function modif(recup As String, Matablecible As String)
' Fait le 31/10/03
' objet : modification des données codées de la rubrique
TYPE
' recup est la variable codée de la table STRUCTURE_TABLE
'Declaration des variables
Dim C1 As Integer
Dim cnnCtoir As New ADODB.Connection
Dim rstTemp As New ADODB.Recordset
'Ouverture de la connexion
With cnnCtoir
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open "c:devADO_test.mdb"
End With
'------------------
' Construction de la requete sql
reqSQL = "SELECT * FROM [STRUCTURE_TABLE]"
'-----------------------------------
' Création de l'objet recordset resCtoir + ouverture
With rstTemp
Set .ActiveConnection = cnnCtoir
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = reqSQL
.Open
End With
'------------------------------------------
'------------------------
'Modification des types de variables
rstTemp.MoveFirst
'rstTemp.MoveNext
var = LCase(recup)
Select Case var
Case "3"
recup = "nombre entier signé de quatre octets
(DBTYPE_I4)"
rstTemp.Update
Case "5"
recup = "valeur à virgule flottante à double
précision (DBTYPE_R8)"
rstTemp.Update
Case "7"
recup = "valeur de date (DBTYPE_DATE)"
rstTemp.Update
Case "11"
recup = "valeur booléenne (DBTYPE_BOOL)"
rstTemp.Update
Case "202"
recup = "chaîne de caractères terminée par
zéro d'Unicode"
rstTemp.Update
Case "203"
recup = "chaine de valeur de type Long
terminée par zéro d'Unicode"
rstTemp.Update
End Select
rstTemp.Update
rstTemp.Close
cnnCtoir.Close
'rstTemp = Nothing
'cnnCtoir = Nothing
End Function
A première vue, il ne semble pas que tu utilises la variable recup au sortir de ton select, peut être que le problème vient de là ... Je pense que tu as oublié d'affecter un des champs de ta table car dans le cas présent le rstTemp.Update que tu fais ne mets à jour aucune donnée, car aucune donnée de la table n'est affectée.
Bon courage
Nicolas
-----Message d'origine----- voici mon problème je récupère les données qui sont codées d'une colonne de ma table, et je veux les modifier j'utilise un select case mais ça ne marche pas pouquoi? voici mon pgm :
Option Compare Database
Dim car As String Function recherche(latable As String)
' Fait le 31/10/03 ' objet : recherche les éléments de la rubrique TYPE de
la
table latable
' Declaration de variable Dim C1 As Integer Dim recup As String Dim ref2 As String Dim cnnCtoir As New ADODB.Connection Dim rstCtoir As New ADODB.Recordset
'----------------------------------- ' Ouverture de la connection With cnnCtoir .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "c:devADO_test.mdb" End With '-----------------------------------
' Construction de la requete sql ramenant tout la table Latable
strSQL = "SELECT * FROM [" & latable & "]"
'-------------------------------------
' Création de l'objet recordset resCtoir + ouverture
With rstCtoir Set .ActiveConnection = cnnCtoir .CursorType = adOpenKeyset .LockType = adLockOptimistic .Source = strSQL .Open End With '-----------------------------------------------------
'libération des variables objets rstCtoir.Close cnnCtoir.Close 'rstTemp.Close Set cnnCtoir = Nothing Set rstCtoir = Nothing
End Function Function main() ' Fait le 31/10/03 ' objet : fonction principale Dim rstSchema As ADODB.Recordset Dim strCnxn As String
'------------------------------- Dim strSQL As String Dim cnnCtoir As New ADODB.Connection With cnnCtoir .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "c:devADO_Test.mdb" End With
'*******************
Set rstSchema = cnnCtoir.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF 'Debug.Print "Table name: " & rstSchema! TABLE_NAME & vbCr & "Table type: " & rstSchema!TABLE_TYPE & vbCr If rstSchema!TABLE_TYPE = "TABLE" Then a = recherche(rstSchema!TABLE_NAME) End If rstSchema.MoveNext Loop
ErrorHandler: ' clean up If Not rstSchema Is Nothing Then If rstSchema.State = adStateOpen Then rstSchema.Close End If Set rstSchema = Nothing
If Not cnnCtoir Is Nothing Then If cnnCtoir.State = adStateOpen Then
cnnCtoir.Close
End If Set cnnCtoir = Nothing
If Err <> 0 Then MsgBox Err.Source & "-->" & Err.Description, , "Error" End If
End Function
Function modif(recup As String, Matablecible As String) ' Fait le 31/10/03 ' objet : modification des données codées de la rubrique TYPE ' recup est la variable codée de la table STRUCTURE_TABLE
'Declaration des variables Dim C1 As Integer Dim cnnCtoir As New ADODB.Connection Dim rstTemp As New ADODB.Recordset
'Ouverture de la connexion With cnnCtoir .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "c:devADO_test.mdb" End With '------------------ ' Construction de la requete sql
reqSQL = "SELECT * FROM [STRUCTURE_TABLE]" '-----------------------------------
' Création de l'objet recordset resCtoir + ouverture With rstTemp Set .ActiveConnection = cnnCtoir .CursorType = adOpenKeyset .LockType = adLockOptimistic .Source = reqSQL .Open End With '------------------------------------------
'------------------------ 'Modification des types de variables
rstTemp.MoveFirst 'rstTemp.MoveNext
var = LCase(recup) Select Case var Case "3" recup = "nombre entier signé de quatre octets (DBTYPE_I4)" rstTemp.Update Case "5" recup = "valeur à virgule flottante à double précision (DBTYPE_R8)" rstTemp.Update Case "7" recup = "valeur de date (DBTYPE_DATE)" rstTemp.Update Case "11" recup = "valeur booléenne (DBTYPE_BOOL)" rstTemp.Update Case "202" recup = "chaîne de caractères terminée par zéro d'Unicode" rstTemp.Update Case "203" recup = "chaine de valeur de type Long terminée par zéro d'Unicode" rstTemp.Update End Select
rstTemp.Update rstTemp.Close cnnCtoir.Close 'rstTemp = Nothing 'cnnCtoir = Nothing End Function
.
elisa
j'ai reglé le pb j'avais pas besoin d'autant de update et a la fin je ne retournait pas de valeur dc ça ne marchait pas merci nicolas
j'ai reglé le pb
j'avais pas besoin d'autant de update
et a la fin je ne retournait pas de valeur dc ça ne
marchait pas
merci nicolas