Not sure what you're trying to achieve. If your query is returning multiple records, is a textbox really the appropriate output control? You've got 2 textboxes, and you're writing two fields from a single record in those fields. After the fix based on ThePhantomUpvoter's suggestion, you're now looping through all your records, but you're still only entering the values for the current record in the textboxes each time through your loop. Perhaps you want this?:
While dr.Read()
TB1.Text &= dr.Item("P_id").ToString
TB2.Text &= dr.Item("P_Name").ToString
End While