fagnerx21 0 Denunciar post Postado Novembro 15, 2007 Oi,eu estou terminando um projeto que estou fazendo para o aprendizado em C# e apenas está faltando terminar a parte de distribuição do programa,ou seja,criar o setup,então tenho que acertar os últimos detalhes antes disso,rodei o programa e não deu nenhum erro,warning,etc... ,mas quando tento logar no programa ele dá um erro de conexão e então paro ali e não consigo utilizar o programa 100%,eu vou postar o código do frmLogin e a imagem contendo o erro e informações,se alguém puder me ajudar eu agradeço de coração. CÓDIGO: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Xml; namespace Agenda { public partial class frmLogin : Form { //Aumenta a versao do programa à cada incializacão private string NomeArqConfig = Application.StartupPath + @"\Agenda.Config"; //Cria uma nova conexão private OleDbConnection cn; //frmLogin recebe o cn externo como parâmetro public frmLogin( OleDbConnection cn ) { InitializeComponent(); //cn externo é associado ao cn interno this.cn = cn; CarregarConfiguracao(); } public void CarregarConfiguracao() { //Abre um arquivo xml XmlReader xml = null; try { /*Verifica a existência do arquivo xml, caso o arquivo não exista,cria-se um novo */ if (!System.IO.File.Exists(NomeArqConfig)) { GravarConfiguracao(); } xml = new XmlTextReader(NomeArqConfig); /*Lê o arquivo xml do ínicio ao fim e a cada leitura,verifica se a TAG lida tem um determinado nome que coincide com um campo na tela(exceto para a senha,pois não deve ser lembrada por motivos de segurança) */ while (xml.Read()) { switch (xml.Name) { /*se coincidir, ele lê o valor da TAG e transfere-o para o campo na tela,o local onde o arquivo está armazenado vem do atributo NomeArqConfig que aponta para um arquivo chamado Agenda.Config no diretório onde a aplicação foi iniciada */ case "txtNomeText": txtNome.Text = xml.ReadString(); break; case "txtDataSourceText": txtDataSource.Text = xml.ReadString(); break; case "cboBancoText": cboBanco.Text = xml.ReadString(); break; default: break; } } } catch (Exception ex) { MessageBox.Show("Erro na leitura da configuracao: " + ex.ToString()); } finally { if (xml != null) xml.Close(); } } private void GravarConfiguracao() { XmlTextWriter xml = null; try { //Cria um novo arquivo xml xml = new XmlTextWriter(NomeArqConfig, null); xml.Formatting = Formatting.Indented; xml.Indentation = 3; xml.Namespaces = false; xml.WriteStartDocument(); xml.WriteStartElement("Configuracoes"); xml.WriteStartElement("txtNomeText"); xml.WriteString(txtNome.Text); xml.WriteEndElement(); xml.Flush(); xml.WriteStartElement("txtDataSourceText"); xml.WriteString(txtDataSource.Text); xml.WriteEndElement(); xml.WriteStartElement("cboBancoText"); xml.WriteString(cboBanco.Text); xml.WriteEndElement(); xml.WriteEndDocument(); xml.Flush(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void btnOK_Click(object sender, EventArgs e) { string Provedor = ""; switch (cboBanco.SelectedIndex) { //Captura os parâmetros fornecidos pelo usuário case -1: MessageBox.Show("Selecione um banco válido!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case 0: Provedor = "Microsoft.Jet.OLEDB.4.0;"; break; case 1: Provedor = "MSDAORA.1;"; break; case 2: Provedor = "SQLOLEDB.1;" + "Initial Catalog=Agenda;"; break; } cn.ConnectionString = "Provider=" + Provedor + "User ID=" + txtNome.Text + ";" + "Password=" + txtSenha.Text + ";" + "Data Source=" + txtDataSource.Text; try { //Tenta abrir a conexão cn.Open(); } catch (Exception ex) { /*Caso haja falha na abertura da conexão, exibe uma mensagem de erro e aborta o processo de login */ MessageBox.Show(ex.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } /*Caso funcione,fecha o formulário e grava os parâmetros de conexão */ this.Close(); GravarConfiguracao(); } private void btnCancelar_Click(object sender, EventArgs e) { //Fecha o formulário this.Close(); } private void frmLogin_FormClosed(object sender, FormClosedEventArgs e) { //Verifica se a conexão está aberta if (this.cn.State != ConnectionState.Open) { //Caso não esteja aberta,encerra a aplicação Application.Exit(); } } } } IMAGEM DE ERRO: Por favor,preciso terminar isso,me ajudem. Obrigado. http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Novembro 16, 2007 fagnerx21 conforme o erro: O arquivo de informações do grupo de trabalho está faltando ou foi aberto em modo exclusivo por outro usuário. Dê uma olhada se o banco esta aberto ou se esta sendo usado por outro processo. http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Novembro 18, 2007 Hmm,não entendi direito isso,mas como eu faço isso?qual o nome do processo?como resolvo isso? Grato. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Novembro 18, 2007 Verifique se existe alguma outra aplicação que utilize o mesmo banco de dados, não é nada especifico do .Net, algo na sua máquina ou na rede que esteja usando o banco ao mesmo tempo. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Novembro 20, 2007 Tá,mas qual seria esse banco,access?o nome do processo?o único programa que utilizo pra desenvolver seria o VS 2005 PRO,como outro programa poderia ter abrido a conexão sendo que utilizo apenas o vs 2005 pra programar? Como faria pra verificar isso e resolver o problema? EDIT: Correção,tenho instalado o easyphp,mas ele não está aberto. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Novembro 21, 2007 Qual seria esse processo? svchost? tenho ums 3 abertos aqui,caso seja este,bastaria apenas finaliza-lo?Caso seja outro processo,qual seria? como resolvo isso? Por favor,me ajudem,queria poder testar este meu projeto. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Novembro 21, 2007 fagnerx21 quando eu comentei de algum processo não é que obrigatoriamente exista um processo que utilize o banco, eu só questionei se podia ter outra pessoa na rede utilizando o mesmo banco, mas como você disse, só você usa esse banco. Não fique preso procurando algum processo, eu só tinha dado esta idéia pensando que você poderia estar em uma rede com mais usuários no mesmo banco. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Novembro 21, 2007 Então já que não to numa rede com outros usuários,o q pode ser? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Novembro 21, 2007 Em qual linha exatamente daquele código que você postou esta dando o erro ?? Qual dos provedores que deu o erro? Provedor = "Microsoft.Jet.OLEDB.4.0;" Provedor = "MSDAORA.1;" Provedor = "SQLOLEDB.1;" Compartilhar este post Link para o post Compartilhar em outros sites
sgssergio 0 Denunciar post Postado Novembro 21, 2007 Existe uma siute de ferramentas muito útiles para estos casos é Sysintenal (www.sysinternals.com) Os mejores pra este caso sâo: Filemon: Monitore atividade o arquivo em tempo real. Process Explorer Busca arquivos, claves o registro no Windows é outros objetos que faz abertos por o processo. Saudações Sergio. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Novembro 25, 2007 Em qual linha exatamente daquele código que você postou esta dando o erro ?? Qual dos provedores que deu o erro? Provedor = "Microsoft.Jet.OLEDB.4.0;" Provedor = "MSDAORA.1;" Provedor = "SQLOLEDB.1;" Eu estou utilizando o banco em access,no caso,Provedor = "Microsoft.Jet.OLEDB.4.0;". Ah,desculpe-me com a demora na resposta,acontece que estou sem internet em casa e utilizo de vez em quando em lan - house. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Novembro 27, 2007 Então,estou usando Microsoft.Jet.OLEDB.4.0,o que devo fazer? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Novembro 29, 2007 fagnerx21 copiei o seu código para tentar ajudar, só não entendi o que é o cboBanco é um TextBox ??? Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Dezembro 7, 2007 fagnerx21 copiei o seu código para tentar ajudar, só não entendi o que é o cboBanco é um TextBox ??? É um combobox,aonde selecionará qual o tipo de banco,Access,Oracle ou SQL. Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Mauricio Leal 0 Denunciar post Postado Janeiro 4, 2008 Fagner, Verifique sua string de conexão. Está faltando o ponto e vírgula ";" para separar o User ID do Provider cn.ConnectionString = "Provider=" + Provedor + ";" "User ID=" + txtNome.Text + ";" + "Password=" + txtSenha.Text + ";" + "Data Source=" + txtDataSource.Text; Teste e verifique. abçs :unsure: Compartilhar este post Link para o post Compartilhar em outros sites