Faz assim, exemplo:
TBL_MOTORISTAS
---------------------------------------------------
codigo_motorista (chave primária)
nome
sobrenome
n_cnh
tipo_habilitacao
rg
endereco
data_cadastro
tempo_experiencia
TBL_ABASTECIMENTO
---------------------------------------------------
codigo_motorista (chave estrangeira) - relacionada com a PK da TBL_MOTORISTAS
codigo(chave primaria)
data_abastecimento
local
valor
Depois vc puxa no seu select pelo código e pelo nome e preenche o combo com o nome, mas no 'value' do combo, coloca o código.
Pra puxar os dados de um motorista e seus abastecimentos(sem filtrar pela data, e exibindo somente motoristas que já fizeram algum abastecimento), pode fazer assim:
SELECT TBL_MOTORISTAS.* from TBL_MOTORISTAS
Inner Join TBL_ABASTECIMENTO On TBL_MOTORISTAS.codigo_motorista = TBL_ABASTECIMENTO.codigo_motorista
WHERE TBL_MOTORISTAS.codigo_motorista = '123456'
Agora, mesma coisa, filtrando pela data:
SELECT TBL_MOTORISTAS.* from TBL_MOTORISTAS
Inner Join TBL_ABASTECIMENTO On TBL_MOTORISTAS.codigo_motorista = TBL_ABASTECIMENTO.codigo_motorista
WHERE TBL_MOTORISTAS.codigo_motorista = '123456' and TBL_ABASTECIMENTO.data-abastecimento BETWEEN #'01/01/2009'# AND #'01/01/2010'#
Você cria um relacionamento de um para muitos entre TBL_MOTORISTAS e TBL_ABASTECIMENTO(Pra cada registro de TBL_MOTORISTAS poderão haver mais de um relacionado na tabela TBL_ABASTECIMENTO, creio que seja isso...) pra controlar a integridade.
Acho que é isso, bem simples.
Mas veja que se precisa definir o tipo de habilitação do motorista("D","E",etc.) é recomendado que tenha outra tabela somente com os tipos(TBL_TIPO_HABILITACAO), aí relaciona pela código do tipo na tabela do cadastro do motorista... A mesma regra vale para qualquer informação que pode ser reutilizada e com várias ou nenhuma ocorrência. Procure sobre normalização de tabelas no banco de dados pra se informar melhor.
[]