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
- Netflix paramètre compte - Guide
- Nom de l'adresse - Forum Réseaux sociaux
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)