Questão O MS Access 2003 contém um console SQL de uso geral


Eu sei que você pode abrir um console SQL no Access ao criar uma consulta ou um modo de exibição, mas há um console 'all purpose' que me permita executar instruções como:

CREATE TABLE Foo
(
Foo_Id int NOT NULL,
Name varchar(255) NOT NULL,
CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name)
)

4


origem




Respostas:


Eu não sei o que você quer dizer com "console para todos os fins", mas talvez dentro do Access seja a Janela Imediata que atenderá às suas necessidades. Se você pressionar Ctrl-G no teclado da janela principal do Access, isso levará você à janela Immediate no VBE e lá você poderá digitar:

  CurrentDB.Execute "CREATE TABLE Foo (Foo_Id int NOT NULL, Name varchar(255) NOT NULL, CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name))"

É uma interface de linha única, portanto não há formatação SQL, mas executará o SQL.

O problema com o uso do CurrentDB como seu objeto de execução é que ele retorna um novo objeto de banco de dados toda vez que você o chama (para garantir que todas as suas coleções estejam atualizadas). Uma alternativa seria:

  DBEngine(0)(0).Execute "CREATE TABLE Foo (Foo_Id int NOT NULL, Name varchar(255) NOT NULL, CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name))"

Como o DBEngine (0) (0) sempre retorna o mesmo objeto, você pode verificar coisas como:

  DBEngine(0)(0).RecordsAffected

O "problema" com isso é que, se você estiver alterando as coleções do banco de dados, precisará se lembrar de atualizá-las antes de usá-las. Por exemplo, se você adicionar ou excluir uma tabela, precisará atualizar a coleção TableDefs para a coleção para estar atualizada:

  DBEngine(0)(0).TableDefs.Refresh

Outra alternativa seria usar um objeto de banco de dados em cache, como eu faço em todos os meus aplicativos, mas não evita o problema de atualização de coleções, mas apenas facilita a digitação (acho que digitar DBEngine (0) (0) bastante propenso a erros, e achei minha função dbLocal muito mais fácil de usar).


7



Eu estou familiarizado com vba e a janela imediata, mas eu estava procurando por um console simples que fazia parte do cliente. Algo como o editor de SQL para uma consulta, mas não vinculado a instruções SQL definem consultas. Estou pensando em escrever um formulário simples que me permita fazer isso, mas não queria fazer isso se já existisse. - DaveParillo
Outras pessoas já fizeram isso (eu vi anúncios dele), embora seja algo que eu nunca acompanhei, já que não sinto necessidade disso. Não tenho certeza de como você gostaria do Google, infelizmente. - David W. Fenton
Se você encontrar utilitários que você gosta, por que você não postar de volta para o segmento e deixe-nos saber o que você gostou. - David W. Fenton
Qual é a sobrecarga quando currentDb retorna o objeto de banco de dados? - Nick
Sobrecarga em que relação? CurrentDB atualiza as coleções e retorna uma cópia do objeto de banco de dados. DBEngine (0) (0) não atualiza as coleções e retorna o ponteiro base do Access para o db atualmente aberto na interface do usuário, em vez de uma cópia dele. Este último pode em circunstâncias muito raras (como depois de executar um assistente) retornar um ponteiro para algo diferente do que o do utilizador vê como o db atualmente aberto na interface do usuário. O CurrentDB nunca tem esse problema. CurrentDB tem sido o método recomendado desde o A97 forward. - David W. Fenton


Abra a visualização de design no objeto de banco de dados de consultas. Feche o fórum Show Table e, em seguida, clique com o botão direito na área vazia na parte superior da janela, abaixo das barras de ferramentas. Selecione SQL View. Isso lhe dará um ponto onde você pode executar consultas SQL. Use o "Run!" da barra de ferramentas.

Essa visão é projetada para você criar e salvar consultas, mas você não precisa.


3





Eu não acredito que o Access foi realmente pensado como sendo usado para uso geral do SQL como criar tabelas e quais não. Você não pode usar "procedimentos armazenados" como faria em um servidor SQL comum. Eu acho que você vai encontrar-se frustrado se você começar a usar o Access sem usar o Visual Designer.

Boa sorte!


1



Eu acho que você provavelmente está certo! Eu realmente gostaria de ter um simples 'bloco de notas' que eu possa usar para brincar com idéias. Eu acho que estou ficando velho, mas a quantidade de cliques e mouse BS que você tem que suportar para realizar as tarefas mais básicas no Access é incompreensível. - DaveParillo


Usando um ADP para se conectar ao SQL Server pode fornecer o que você deseja. No entanto, não sei até que ponto o Access 2003 permite que você crie modos de exibição e procedimentos armazenados no SQL Server 2005 ou 2008 como eles foram lançados após A2003.


0



Obrigado. Você tem alguma documentação / links? Eu sei que o Access 2003 não suporta procedimentos armazenados. Eu acho que a suposição é que 'procedimentos armazenados' seriam implementados no IDE do VBA. - DaveParillo