locked
accees2007 RRS feed

  • Pergunta

  • Alguém me pode ajudar no Access? É o seguinte:

    Preciso de adicionar um registo em uma tabela, o que normalmente se faz, em SQl com o seguinte comando...

    DoCmd.RunSQL "INSERT INTO TempCliente ([FirstName], [LastName], [BirthDate])VALUES ('Paulo Fragoso', 'Linda a Velha', #09/24/1983#);"

    Sendo TempCliente a minha tabela e [FirstName]... parte dos campos da mesma, já que esta tabela tem 25 campos!

    Agora é que reside o problema... Eu pretendo adicionar de uma só vez todos os campos de um registo numa tabela temporária (TempClientes) sem estar a descreve_los um a um. Não haverá uma função que memorize o conteúdo dos campos ( tipo SCATTER MEMVAR)

    Será possível em Acces? COMO FAÇO?

    Só mais uma dúvida. Como faço para pesquisar todos os registos de uma tabela.

    Pensei que com Do While not eof().... mas não funciona, não sei porquê.

    Alguém me pode ajudar?

    Desde já os meus agradecimentos.

     

    • Movido Gustavo Maia Aguiar domingo, 21 de março de 2010 22:54 (De:SQL Server - Desenvolvimento Geral)
    sexta-feira, 19 de março de 2010 15:26

Respostas

  • Bom dia,

    Você encontra bastante material em www.apostilando.com.

    Um abraço

    • Marcado como Resposta Estádificil quinta-feira, 25 de março de 2010 22:04
    quinta-feira, 25 de março de 2010 13:48
  • Tem que incluir o comando rs.MoveNext antes de fechar o While.

    Mas por que não usa a cláusula WHERE na instrução SQL? Ou são duas situações distintas?

    Se ainda estiver com problemas, manda o banco por e-mail, facilita com a solução.

    Abs

    • Marcado como Resposta Estádificil quinta-feira, 25 de março de 2010 11:53
    quarta-feira, 24 de março de 2010 15:55

Todas as Respostas

  • Estádicifil,

    Segue um tutorial com comparações dos comandos SQL e Access.

    http://www.macoratti.net/aspn_bdb.htm

    att,

    Fernanda


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    terça-feira, 23 de março de 2010 15:15
    Moderador
  • Creio que você se refere a memorizar os nomes dos campos da tabela, e não ao conteúdo dos campos.

    Não sei se o Access tem algum comando assim, mas o código abaixo lista os campos da tabela SuaTabela, que você pode adaptar para a instrução SQL (apesar de parecer mais trabalhoso do que descrever todos os campos na instrução):

    Dim db As Database
    Dim tbf As TableDef
    Dim fld As Field
    
    Set db = CurrentDb
    Set tdf = db.TableDefs!SuaTabela
    
    For Each fld In tdf.Fields
       Debug.Print fld.Name
    Next fld
    
    Set tdf = Nothing
    

    Para percorrer os registros de uma tabela:

    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SuaTabela")
    
    Do While Not rs.EOF
    quarta-feira, 24 de março de 2010 13:18
  • Boa tarde Claudio

    De facto o que eu pretendo é os conteúdos dos campos. O objectivo é o seguinte:

    Tenho uma tabela com mais ou menos 500 registos de Clientes e quero extrair(INSERT INTO TABLE...) para outra tabela, neste caso temporária (tempcliente) todos aqueles que fazem anos nos próximos 10 dias tendo como base Date(). Utilizei a segunda parte da sua resposta, com algumas adaptações, mas quando executo a aplicação pelo Debug, verifico através da instrução MsgBox nome (nome é o nome do campo cujo conteúdo é o nome do cliente) que o cursor está sempre no primeiro registo, não salta para o registo seguinte. Porquê?

    Agradeço a sua ajuda. Espero não estar a ser um xato

    Um abraço

    Estádificil

    quarta-feira, 24 de março de 2010 14:24
  • Tem que incluir o comando rs.MoveNext antes de fechar o While.

    Mas por que não usa a cláusula WHERE na instrução SQL? Ou são duas situações distintas?

    Se ainda estiver com problemas, manda o banco por e-mail, facilita com a solução.

    Abs

    • Marcado como Resposta Estádificil quinta-feira, 25 de março de 2010 11:53
    quarta-feira, 24 de março de 2010 15:55
  • Bom dia Cláudio!

    Como sou novo em acces, ainda não pensei em algumas variantes, tais como a que me referiu (WHERE). Vou de facto rever algumas instruções em acces e ver como se efectua uma busca nos registos.

    Já agora. è capaz de me indicar alguma literatura onde poderei ler sobre access ou sql? 

    Agradeço a sua disponibilidade!

    Um Abraço

    Estádificil

    quinta-feira, 25 de março de 2010 11:53
  • Bom dia,

    Você encontra bastante material em www.apostilando.com.

    Um abraço

    • Marcado como Resposta Estádificil quinta-feira, 25 de março de 2010 22:04
    quinta-feira, 25 de março de 2010 13:48
  • Boa noite Cláudio

    Obrigado pela informação. Julgo que vai ser útil.

    Relativamente ao ciclo while... ele funciona mesmo, embora me tenham dado uma dica

    Este é o código que você forneceu


    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Clientes")
    Set tdf = db.TableDefs!clientes

    Do While Not rs.EOF

        MsgBox rs("nome") ' Aqui está o código em que estava a errar. Eu colocava MsgBox nome
       
        rs.MoveNext

    Loop

    Um Abraço

    quinta-feira, 25 de março de 2010 22:03