Ok, penso di aver finalmente capito

Una soluzione è questa, che non fa uso di TableAdapter mi di un DataReader. L'ho scritta senza verificarla, in ogni caso trovi sul forum e in google centinaia di esempi simili:
codice:
		Dim sql As String
		Dim dr As OleDbDataReader
		Dim cmd As OleDbCommand
		Dim cn As OleDbConnection

		'apre la connessione al db
		cn = New OleDbConnection("...")	'qui metti la tua connection string
		cn.Open()

		'prepara la query
		'nota che alcuni campi sono anche parole riservate di Jet, quindi è necessario usare le parentesi quadre
		sql = "SELECT ID, [Username], [Password], Email AS EmailInput FROM UsersList WHERE ([Email] = ?)"

		'crea il command
		cmd = New OleDbCommand(sql, cn)
		cmd.Parameters.Add("", OleDbType.BSTR).Value = TextBox1.Text.Trim

		'esegue la query
		dr = cmd.ExecuteReader(CommandBehavior.SingleRow)

		'legge il primo record
		If dr.Read Then	'se esiste un record
			Dim smtpServer As New SmtpClient()
			ProgressBar1.Value = 10
			Dim mail As New MailMessage()
			ProgressBar1.Value = 17
			smtpServer.Credentials = New Net.NetworkCredential("info.sdmt@gmail.com", "sdmtusercommunications01")
			ProgressBar1.Value = 23
			'Gmail Account
			smtpServer.Port = 587
			ProgressBar1.Value = 27
			smtpServer.Host = "smtp.gmail.com"
			ProgressBar1.Value = 40
			smtpServer.EnableSsl = True
			mail = New MailMessage()
			mail.From = New MailAddress("xxxx@gmail.com")
			mail.To.Add(dr("Email").ToString)
			mail.Subject = "Username & Password Retrival"
			mail.Body = String.Format("Il tuo username è {0}, la tua password è {1}", dr("Email").ToString, dr("Password").ToString)
			smtpServer.Send(mail)
			ProgressBar1.Value = 100
			MsgBox("mail Sent!")
			ProgressBar1.Value = 0
			TextBox1.Clear()

			dr.Close()
			cn.Close()

			Me.Hide()
			Form2.Show()
		Else	'nessun record
			MsgBox("Your email is not in our database. Please subscribe! ", MsgBoxStyle.Exclamation)
			TextBox1.Clear()

			dr.Close()
			cn.Close()
		End If