VBA Access - Nom de champ en paramètre
MichaelKeul
-
MichaelKeul -
MichaelKeul -
Bonjour,
Je sèche sur un problème qui doit être assez simple à résoudre, mais je n'en trouve pas la solution.
Je fais appel à une fonction qui va rechercher la valeur d'un champ précis pour un enregistrement précis. Pour ce faire je passe en paramètre de ma fonction le nom de ma table, l'ID de l'enregistrement et le nom du champ.
Function FindLinkedString(ByVal Table As String, ByVal ID As Integer, ByVal Field As String) As String
Dim mydb2 As Database
Dim LinkedTable As Recordset
Dim linkedTableCount As Integer
Set mydb2 = CurrentDb()
Set LinkedTable = mydb2.OpenRecordset(Table)
LinkedTable.MoveFirst
For linkedTableCount = 1 To LinkedTable.RecordCount
If LinkedTable!ID = ID Then
FindLinkedString = Table & "!" & Field
GoTo Fin_FindLinkedString
End If
LinkedTable.MoveNext
Next
Fin_FindLinkedString:
LinkedTable.Close
mydb2.Close
End Function
Le problème est que FindLinkedString = Table & "!" & Field , c'est visiblement foireux puisqu'il ne va pas rechercher la valeur dans la db, il sauve le string en transformant "Table" et "Field" par les paramètres (ex: "Clients!Nom" alors que je voudrais qu'il ressorte "Dupont")
Est-ce que quelqu'un pourrait me dire ce que je dois modifier ?
Grand grand merci
Je sèche sur un problème qui doit être assez simple à résoudre, mais je n'en trouve pas la solution.
Je fais appel à une fonction qui va rechercher la valeur d'un champ précis pour un enregistrement précis. Pour ce faire je passe en paramètre de ma fonction le nom de ma table, l'ID de l'enregistrement et le nom du champ.
Function FindLinkedString(ByVal Table As String, ByVal ID As Integer, ByVal Field As String) As String
Dim mydb2 As Database
Dim LinkedTable As Recordset
Dim linkedTableCount As Integer
Set mydb2 = CurrentDb()
Set LinkedTable = mydb2.OpenRecordset(Table)
LinkedTable.MoveFirst
For linkedTableCount = 1 To LinkedTable.RecordCount
If LinkedTable!ID = ID Then
FindLinkedString = Table & "!" & Field
GoTo Fin_FindLinkedString
End If
LinkedTable.MoveNext
Next
Fin_FindLinkedString:
LinkedTable.Close
mydb2.Close
End Function
Le problème est que FindLinkedString = Table & "!" & Field , c'est visiblement foireux puisqu'il ne va pas rechercher la valeur dans la db, il sauve le string en transformant "Table" et "Field" par les paramètres (ex: "Clients!Nom" alors que je voudrais qu'il ressorte "Dupont")
Est-ce que quelqu'un pourrait me dire ce que je dois modifier ?
Grand grand merci
A voir également:
- VBA Access - Nom de champ en paramètre
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Parametre windows - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
- Annuaire portable gratuit a partir d'un nom ✓ - Forum Mobile
3 réponses
Bonjour,
Mais on peut faire plus simple:
;o)
'...
LinkedTable.MoveFirst
While Not LinkedTable.EOF
If LinkedTable.Fields("ID") = ID Then
FindLinkedString = LinkedTable.Fields("Nom")
LinkedTable.Close
mydb2.Close
Set LinKedTable = Nothing
Set mydb2 = Nothing
Exit Function
End If
LinkedTable.MoveNext
Wend
'...
Mais on peut faire plus simple:
'...
Set LinkedTable = mydb2.OpenRecordset("SELECT Nom FROM " & Table & " WHERE ID = " & ID)
FindLinkedString = LinkedTable.Fields(0)
'...
;o)