Jump to content

Recommended Posts

Posted (edited)

Boas a todos,

Hoje não venho perguntar nada, apenas ajudar a comunidade, alertando para um problema que tive e provavelmente mais alguém teve ou possa vir a ter.

Então versa assim:

Estou a trabalhar num site, em ASP, claro, que faz a gestão de bases de dados em MS Access em DSN-Less. Esta tem um campo booleano. Que é aqui que está o problema todo....

Ora, quando quero inserir um registo ou alterar o campo booleano de forma directa, isto é através da própria variavel, se estiver a correr o IIS em inglês não tenho qualquer problema, mas se por outro lado o IIS estiver correr em português gera o erro seguinte:

Microsoft OLE DB Provider for ODBC Drivers erro '80040e10'
[Microsoft][Controlador Microsoft Access de ODBC] Poucos parâmetros. 1 esperado.

Se pesquisarem um pouco sobre este erro, somos levados no sentido oposto ao real. Leva-nos a pensar que existe uma variavel com o nome errado.

Uma depuração do meu código mais promenorizada levou-me a descobrir que o problema está sim no que é enviado para a base de dados, e sendo de uma forma directa o valor que vai é VERDADEIRO em vez de TRUE

Assim se eu programar assim:

SQLStmt = "Insert into ficha (variavel_bool) VALUES(" & var_bool & ")"

Em português vai dar o erro pois vai assumir na variavel var_bool os valores VERDADEIRO ou FALSO

O truque é programar assim:

SQLStmt = "Insert into ficha (variavel_bool) VALUES("
if var_bool then
 SQLStmt = SQLStmt & "True"
else
 SQLStmt = SQLStmt & "False"
end if
SQLStmt = SQLStmt &  ")"

Ah, e o mais engraçado é que a Base de dados até foi criada num MS Access em Português... portanto o contrário é que teia mais lógica... ou não!

PS1 - Código corrigido

Edited by passarito
Posted

Estou a trabalhar num site, em ASP, claro, que faz a gestão de bases de dados em MS Access em DSN-Less. Esta tem um campo booleano. Que é aqui que está o problema todo....

Em ASP.NET, certo?

E estás a usar uma base de dados MS Access para uma página web??? Sabes o que estás a fazer?

Em português vai dar o erro pois vai assumir na variavel var_bool os valores VERDADEIRO ou FALSO

E já experimentaste usar 1 e 0? Já não utilizo à algum tempo, mas deve funcionar assim (acho!):

"INSERT INTO tabela (campoBooleano) VALUES (1)"

"INSERT INTO tabela (campoBooleano) VALUES (0)"

O truque é programar assim:

Tens o código errado ... deverá ser:

SQLStmt = "Insert into ficha (variavel_bool) VALUES("
if var_bool then
 SQLStmt = SQLStmt & "True"
else
 SQLStmt = SQLStmt & "False"
end if
SQLStmt = SQLStmt &  ")"
Posted

Em ASP.NET, certo?

Não, não é ASP.NET é em ASP PURO

E estás a usar uma base de dados MS Access para uma página web??? Sabes o que estás a fazer?

Sim, estou a usar MS Access para uma página web.

Já agora, podes me explicar o porquê da tua admiração?

É que nunca tive qualquer problema, mas se há algum problema diz aí. E qual a base de dados que se deva usar.

Eu aprendi ASP de uma forma autodidata, admito que há coisas (muitas) que me passam ao lado!

Quanto ao 0/1 e True/False eu sabia disso, mas prefiro sempre o True/False. A nível de entendimento de código mais tarde será sempre mais fácil se estiver programado com True/False

Também queria agradecer pela correcção do código.

Posted

Sim, estou a usar MS Access para uma página web.

Já agora, podes me explicar o porquê da tua admiração?

É que nunca tive qualquer problema, mas se há algum problema diz aí. E qual a base de dados que se deva usar.

Eu aprendi ASP de uma forma autodidata, admito que há coisas (muitas) que me passam ao lado!

O MS Access não é um SGBD (não gere tão bem as ligações em sites com algum trafego, gestão de memória, segurança, etc), não permite usar nenhum ORM para mapeamento de objectos, tem vários casos em que a base de dados corrompe, etc.

É sempre aconselhavel usar SQL Server, MySQL, Oracle, etc.

Posted

@jpaulino, obrigado pelo esclarecimento. Da tua explicação estou a depreender que o problema que tenho no Delphi com as Bases de Dados em MS Access em que a barra de deslocamento vertical não funciona convenientemente, poderá ser pelo que explicaste.

Voltando ao ASP/Access, tenho as minhas BD em Access a trabalhar à cerca de 10 anos e nunca tive qualquer problema de ficarem corrompidas, memória ou qualquer outro excepto o de segurança em que se houve algum problema eu não dei por ele!

Vou colocar aqui os pontos positivos pelos quais uso as Bases de Dados Access em DSN-Less:

- Não necessito de servidor que disponibilize SQL, o que fica mais barato na WEB e numa intranet o servidor ou PC fica mais leve.

- Coloco as BD nas pastas que me apetecem e direcciono a programação para lá. Num ASP posso ter as BD que quiser nas pastas que quiser ao mesmo tempo.

- Posso facilmente testar em intranet em qualquer computador e depois de tudo a funcionar bem actualizar todo o site.

Não sei se os outros permitem estas facilidades, há algum tempo atrás ponderei passar para MySQL, mas obrigava-me a ter as BD todas no mesmo local e desisti logo. Não sei se será mesmo assim ou se foi algo que não descobri como se faz.

Já na altura fiz uma pesquisa entre o DSN e o DSN-Less e achei o DSN-less melhor.

The results...

These tests showed that DSN-less connections were slightly faster than System DSN connections. The increase in performance was nothing monumental; the greatest performance boost was a mere 13% faster with 64 concurrent requests. For one, two, or four concurrent requests, there was virtually no performance improvement. In fact, no noticeable improvement is seen in a DSN-less connection over a System DSN until there are 10 or more concurrent connections.

in http://www.4guysfromrolla.com/webtech/070399-1.shtml

ou

http://www.stardeveloper.com/articles/display.html?article=2000120101&page=1

Nota: Com isto tudo, não estou a discordar de ti, longe disso!!!, apenas estou a mostrar as razões pelo qual uso as coisas desta forma, mas estou sempre aberto a mudanças!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.