you can access fields by name, eg: Components_recordset("componentsID")

also, you are showing a message for each field, whereas you should be showing a message per record instead, eg:
VB Code:
  1. Count = Components_recordset.recordcount
  2. For counter = 1 to Count
  3.   Msgbox  Components_recordset("componentsID") & " " & Components_recordset("component_Name")" is running low"
  4.   Components_recordset.movenext
  5. next counter

alternatively (essentially the same code, just looks different):
VB Code:
  1. With Components_recordset
  2.   Do While Not (.EOF)
  3.     Msgbox  .Fields("componentsID") & " " & .Fields("component_Name")" is running low"
  4.     .MoveNext
  5.   Loop
  6. End With