Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

select case

2 réponses
Avatar
elisa
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

strSQL =3D "SELECT * FROM [" & latable & "]"

=20
'-------------------------------------
=20
' Cr=E9ation de l'objet recordset resCtoir +=20
ouverture

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

2 réponses

Avatar
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
'-----------------------------------------------------


-
-

'Recherche des types de variables

C1 = 0
While C1 <= rstCtoir.Fields.Count - 1
recup = rstCtoir.Fields(C1).Type
Debug.Print rstCtoir.Fields(C1).Type
'rstCtoir.Fields(C1).Name & ";" & rstCtoir.Fields
(C1).Type & ";" & latable & ";"
a = modif(recup, "STRUCTURE_TABLE")
C1 = C1 + 1
Wend
'---------------------------------------

'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


.



Avatar
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