fagnerx21 0 Denunciar post Postado Outubro 30, 2007 Olá a todos,é o seguinte,no meu código,antes do construtor do meu formulário eu estou criando um arraylist,depois do código terminado eu executo e dá um erro no arraylist: "The type or namespace name 'ArrayList' could not be found(are you missing a using directive or an assembly reference?)". Bom,pelos meus conhecimentos,acredito que esteja faltando uma referência a algum namespace.Mas não sei qual seria. Por favor,me digam o que eu tenho que fazer para corrigir este problema. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Outubro 30, 2007 Por favor,alguém sabe o que esse erro quer dizer?está faltando algum namespace? qual? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
klaygomes 0 Denunciar post Postado Outubro 30, 2007 Você inseriu uma referencia ao ns collections? using System.Collections; Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Outubro 30, 2007 Sim,já tem,até pq o VS inseri automaticamente. Compartilhar este post Link para o post Compartilhar em outros sites
klaygomes 0 Denunciar post Postado Outubro 30, 2007 fagnerrx, O VS2005 inclui uma referencia ao NS System.Collections.Generic e não ao System.Collections, confere ai. Se continuar dando problema digita System.Collections e navega pelo intelissensse do VS para ver se ela aparece. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Outubro 30, 2007 você tá certo era isso mesmo,mas depois que acertei este erro,testei e surgiu mais 8 erros http://forum.imasters.com.br/public/style_emoticons/default/upset.gif ,vou postar o código e os erros,se você puder me ajudar ficarei muito grato,sou novato em C# e não consigo entender bem estas msgs de erro,valeu. http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif 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.Collections; namespace Agenda { public partial class frmBase : Form { //Tipos Enumerados public enum TipoBanco { Access, Oracle, SQLServer } protected enum MomentoGeracaoID { Imediato, AntesdeGravar, SomenteNoServidor, Nenhum } protected enum StatusPossiveis { Inativo, Novo_Registro, Alteração } //Campos (atributos) protected TipoBanco Banco; protected StatusPossiveis FStatusForm; protected MomentoGeracaoID GeracaoID = MomentoGeracaoID.Nenhum; /*Usa-se um ArrayList para a implementação de arrays dinâmicos(que mudam de tamanho em tempo de execução) para armazenar uma lista de adaptadores(OleDbDataAdapter) para manipulação de tabelas filhas */ protected ArrayList AdapDetalhe = new ArrayList(); public frmBase() { InitializeComponent(); } //Propriedades protected StatusPossiveis StatusDoForm { //Lê o status do formulário get { return FStatusForm; } set { //Grava o status do formulário FStatusForm = value; //Atualiza o label com o status corrente do formulário lblStatus.Text = Enum.Format(typeof( StatusPossiveis ), FStatusForm, "G" ); } } public OleDbConnection Conexao { get { return cn; } set { cn.Dispose(); cn = value; /*É atribuído a todos os commands o mesmo objeto de conexão fazendo com que o formulário fique inteiramente sincronizado com a conexão principal */ cmdSelect.Connection = this.cn; cmdInsert.Connection = this.cn; cmdUpdate.Connection = this.cn; cmdDelete.Connection = this.cn; AjustarTipoBanco( cn.Provider ); /*Laço foreach que percorre cada tabela detalhe e faz o engate com a conexão */ foreach( OleDbDataAdapter da in AdapDetalhe ) { da.SelectCommand.Connection = this.cn; da.InsertCommand.Connection = this.cn; da.UpdateCommand.Connection = this.cn; da.DeleteCommand.Connection = this.cn; } } } protected virtual void VincularCampos() {} protected virtual void DesvincularCampos() {} protected virtual void ValidarDados() {} public static string GerarID( OleDbConnection cn, TipoBanco Banco ) { OleDbCommand cmd = new OleDbCommand(); cmd.Connection = cn; string Resultado; OleDbDataReader Leitor; //O sistema detecta qual o tipo de banco if ( Banco == TipoBanco.Oracle ) { /*No Oracle puxa-se o NEXTVAL do objeto ID para gerar um novo ID */ cmd.CommandText = "SELECT ID.NEXTVAL FROM DUAL"; Leitor = cmd.ExecuteReader(); Leitor.Read(); Resultado = Leitor[0].ToString(); Leitor.Close(); //No Oracle não precisa haver exclusão } else { /*No SQL e Access,insere um novo registro na tabela de IDs */ cmd.CommandText = "INSERT INTO ID ( Inutil ) VALUES ( 'X' )"; cmd.ExecuteNonQuery(); /*O SQL e Access possuem uma variavel global chamada @@identity que retorna o último valor de ID gerado dentro do sistema */ cmd.CommandText = "SELECT @@identity"; Leitor = cmd.ExecuteReader(); Leitor.Read(); Resultado = Leitor[0].ToString(); Leitor.Close(); /*Elimina o registro recém-inserido,pois não terá utilidade,a destruição deste registro não afetará a sequência de IDs */ cmd.CommandText = "DELETE FROM ID WHERE ID = " + Resultado; cmd.ExecuteNonQuery(); } return Resultado; } private void btnLocalizar_Click(object sender, EventArgs e) { try { LocalizarMestre(); IniciarEdicao(); } catch( Exception ex ) { MessageBox.Show( ex.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnGravar_Click(object sender, EventArgs e) { try { GravarMestre(); FinalizarEdicao(); } catch( Exception ex ) { MessageBox.Show( ex,ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnDesistir_Click(object sender, EventArgs e) { FinalizarEdicao(); } private void btnExcluir_Click(object sender, EventArgs e) { try { ds.Tables[0].Rows[0].Delete(); GravarMestre(); FinalizarEdicao(); } catch( Exception ex ) { MessageBox.Show( ex.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } public virtual void IniciarEdicao() { btnGravar.Enabled = true; btnDesistir.Enabled = true; if ( StatusDoForm == StatusPossiveis.Alteração ) { btnExcluir.Enabled = true; } btnLocalizar.Enabled = false; if ( GeracaoID == MomentoGeracaoID.Nenhum ) { txtChave.Enabled = false; } VincularCampos(); } public virtual void FinalizarEdicao() { btnGravar.Enabled = false; btnDesistir.Enabled = false; btnExcluir.Enabled = false; btnLocalizar.Enabled = true; txtChave.Enabled = true; StatusDoForm = StatusPossiveis.Inativo; /*Ocorre a eliminação de todas as linhas em todas as tabelas do dataset */ ds.Clear(); //Ocorre a destruição das tabelas ds.Tables.Clear(); DesvincularCampos(); txtChave.Focus(); txtChave.Clear(); } protected virtual void LocalizarMestre() { /*Invoca o método CampoChaveEmBranco que determina o que será feito caso o usuário não forneça nenhum valor de pesquisa */ CampoChaveEmBranco(); DefinirBuscaMestre(); /*Caso a pesquisa traga + de 1 registro, será chamado o método SeTrouxerMultiplos */ SeTrouxerMultiplos(); /*Verifica se o número de registros retornados foi igual a 0, caso isso aconteça,significa que não foi encontrado nenhum registro e o sistema permitirá inserir um novo */ if ( ds.Tables[0].Rows.Count == 0 ) { StatusDoForm = StatusPossiveis.Novo_Registro; //Caso esteja em modo de inclusão,é criado uma nova linha DataRow dr = ds.Tables[0].NewRow(); /*Se não houver geração de ID,assume o texto que o próprio usuário digitou */ if ( GeracaoID == MomentoGeracaoID.Nenhum ) { dr[0] = txtChave.Text; } ds.Tables[0].Rows.Add( dr ); } else { StatusDoForm = StatusPossiveis.Alteração; } if ( StatusDoForm == StatusPossiveis.Novo_Registro && GeracaoID == MomentoGeracaoID.Imediato ) { ds.Tables[0].Rows[0][0] = GerarID( cn, Banco ); } LocalizarDetalhe(); } protected virtual void CampoChaveEmBranco() { //Verifica se o campo txtChave está vazio e emite uma mensagem ao usuário if ( txtChave.Text.Trim() == "" ) { txtChave.Focus(); throw new exception( "Preencha o campo chave!" ); } } protected virtual void DefinirBuscaMestre() { /*Invoca o método TrazerRegistros passando 2 parâmetros,o campo chave e o DataAdapter adequado */ TrazerRegistros( new string[] { txtChave.Text }, da ); } protected virtual void TrazerRegistros( string[] Chave, OleDbDataAdapter da ) { int i = 0; /*Existe um laço que atribui os valores passados pelas strings aos parâmetros da consulta */ foreach( string s in Chave ) { da.SelectCommand.Parameters[i++].Value = s; } da.Fill( ds, System.Guid.NewGuid().ToString() ); } protected virtual void LocalizarDetalhe() { /*Existe um laço no array AdapDetalhe para descobrir todos os adaptadores ligados e definir a chave de pesquisa */ foreach( OleDbDataAdapter da in AdapDetalhe ) { DefinirBuscaDetalhe( da ); } } protected virtual void DefinirBuscaDetalhe( OleDbDataAdapter da ) { TrazerRegistros( new string[] { ds.Tables[0].Rows[0][0].ToString() }, da ); } protected virtual void GravarMestre() { /*Invoca o método ValidarDados que inicialmente está vázio e será preenchido apenas nas instâncias filhas do formulário base */ ValidarDados(); //Existe um laço que percorre todas as linhas de todas as tabelas foreach( DataTable dt in ds.Tables ) { foreach( DataRow dr in dt.Rows ) { /*Se não ocorrer um EndEdit() em cada linha, o status do registro não é mudado, permanecendo como "Unchanged" */ dr.EndEdit(); } } if ( GeracaoID == MomentoGeracaoID.AntesdeGravar ) { ds.Tables[0].Rows[0][0] = GeracaoID( cn, Banco ); } /*É iniciado a transação em bloco pela conexão do banco de dados com o método BeginTransaction */ OleDbTransaction tr = cn.BeginTransaction(); /*As transações são tratadas,caso alguma delas falhem, todas são canceladas(rollback),caso a transação chegue com sucesso ao final, a transação é confirmada(commit) e encerrada */ try{ cmdDelete.Transaction = tr; cmdInsert.Transaction = tr; cmdUpdate.Transaction = tr; da.Update( ds.Tables[0] ); GravarDetalhe( tr ); tr.Commit(); } catch( Exception e ) { tr.Rollback(); throw e; } } protected virtual void GravarDetalhe( OleDbTransaction tr ) { //A tabela zero é a master int NumTabela = 1; foreach( OleDbDataAdapter da in AdapDetalhe ) { da.UpdateCommand.Transaction = tr; da.DeleteCommand.Transaction = tr; da.InsertCommand.Transaction = tr; da.Update( ds.Tables[NumTabela++] ); } } protected virtual void SeTrouxerMultiplos() { /*Verifica a quantidade de registros encontrados e impede que seja feito um filtro muito grande */ if ( ds.Tables[0].Rows.Count >= 100 ) { throw new exception( "Filtre melhor sua pesquisa!" ); } if ( ds.Tables[0].Rows.Count >=2 ) { //Cria um novo objeto DataView System.Data.DataView dv = new System.Data.DataView( ds.Tables[0] ); //Impede alterações na tabela através do objeto DataView dv.AllowNew = false; dv.AllowEdit = false; dv.AllowDelete = false; /*É criado o formulário de localizar e faz-se a associação do Grid ao DataView */ frmLocalizar f = new frmLocalizar(); f.Grid.DataSource = dv; System.Windows.Forms.DialogResult BotaoSelecionado; BotaoSelecionado = f.ShowDialog(); /*Verifica qual botão o usuário selecionou,se selecionou OK, ocorre uma filtragem na tabela baseado no nome da coluna zero com o valor da linha selecionada no grid na coluna zero, se selecionou ignorar,todas as linhas da tabela são eliminadas, de forma que,ao retornar para o formulário base,o codigo LocalizarMestre vai detectar uma tabela vazia e gerar uma inserção */ switch ( BotaoSelecionado ) { case System.Windows.Forms.DialogResult.OK: string Filtro = ds.Tables[0].Columns[0].ColumnName + "< >" + ds.Tables[0].Rows[ f.Grid.CurrentRowIndex][0].ToString(); /*Existe um laço que elimina da tabela todos os registros que não coincidem com o ID selecionado */ foreach( DataRow dr in ds.Tables[0].Select( Filtro ) ) { ds.Tables[0].Rows.Remove( dr ); } break; case System.Windows.Forms.DialogResult.Ignore: //Limpa tudo e permite uma nova inclusão ds.Tables[0].Rows.Clear(); break; default: /*Gera uma exceção,interrompendo todo o processo e reposicionando o usuário no campo de pesquisa */ ds.Clear(); throw new exception( "Forneça um novo " + "parâmetro de busca!" ); } } } } } Error Log: Error 1 The name 'AjustarTipoBanco' does not exist in the current context C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\Agenda\Agenda\frmBase.cs 72 17 Agenda Error 2 The type or namespace name 'exception' could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\Agenda\Agenda\frmBase.cs 259 27 Agenda Error 3 'Agenda.frmBase.GeracaoID' is a 'field' but is used like a 'method' C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\Agenda\Agenda\frmBase.cs 312 43 Agenda Error 4 The type or namespace name 'exception' could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\Agenda\Agenda\frmBase.cs 352 27 Agenda Error 5 'Agenda.frmLocalizar.Grid' is inaccessible due to its protection level C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\Agenda\Agenda\frmBase.cs 367 19 Agenda Error 6 'Agenda.frmLocalizar.Grid' is inaccessible due to its protection level C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\Agenda\Agenda\frmBase.cs 383 29 Agenda Error 7 The type or namespace name 'exception' could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\Agenda\Agenda\frmBase.cs 401 35 Agenda Error 8 Only assignment, call, increment, decrement, and new object expressions can be used as a statement C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\Agenda\Agenda\frmLogin.cs 25 13 Agenda Por favor,me ajude. Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
klaygomes 0 Denunciar post Postado Outubro 30, 2007 Vamos ao erros: Error 1- o metodo AjustarTipoBanco foi declarado aonde? Clique com o botão direito do mouse sobre este objeto e depois em "Go to Definition" (se ele não achar nada você vai ter que implementa-lo) Error 2 - ao invés de exception use a classe Exception. obs.: exception é um Code Snippet, experimente digitar exception (com e minusculo) e logo após a tecla tab. Error 3 - É bem provável que além de um metodo você também tenha um objeto com este mesmo ID, vai ter que procurar (se não for a mensagem de erro é bem clara) Error 4 - ver solução para erro número 2 Error 5 - No modo visual clique no grid e veja em properties subopção design a um item chamado modifies mude para public (acho que isso vai resolver o problema). Error 6 - ver item 5 Error 7 - ver item 2 Error 8 - ??? você não postou a página de códigos frmLogin.cs Dúvida, você obteve este projeto aonde? Foi você que fez? Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Outubro 31, 2007 É o seguinte,eu consegui um e-book Guia do Desenvolvedor C# pra poder aprender C# e começar a programar,dae nos 4 últimos capítulos do livro mostra como fazer um projeto de uma agenda e compromissos. Ah,desculpe-me,ae está o frmLogin: 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; 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(); } } } } Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Outubro 31, 2007 Eu andei dando uma procurada no livro e sabe de uma coisa?Os autores do livro(Edwin Lima e Eugênio Reis) nesse código usaram este método('AjustarTipoBanco') passando como parâmetro o provedor da conexão,mas,esqueceram de criar o método,ou seja,estão usando um método que não existe :blink: ,queria ver agora como vou criar este método,se você puder me ajudar... Não sei,talvez se deletar esta linha não geraria outros erros? Eu queria muito poder terminar este projeto :) Olha,deletei a linha que usa o método AjustarTipoBanco e agora resta 7 erros :) então quer dizer que aquela linha não era nada. Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Outubro 31, 2007 Vamos ao erros: Error 1- o metodo AjustarTipoBanco foi declarado aonde? Clique com o botão direito do mouse sobre este objeto e depois em "Go to Definition" (se ele não achar nada você vai ter que implementa-lo) Error 2 - ao invés de exception use a classe Exception. obs.: exception é um Code Snippet, experimente digitar exception (com e minusculo) e logo após a tecla tab. Error 3 - É bem provável que além de um metodo você também tenha um objeto com este mesmo ID, vai ter que procurar (se não for a mensagem de erro é bem clara) Error 4 - ver solução para erro número 2 Error 5 - No modo visual clique no grid e veja em properties subopção design a um item chamado modifies mude para public (acho que isso vai resolver o problema). Error 6 - ver item 5 Error 7 - ver item 2 Error 8 - ??? você não postou a página de códigos frmLogin.cs Dúvida, você obteve este projeto aonde? Foi você que fez? Cara,alguns erros ae foram apenas erros de digitação meu, throw new exception an verdade apenas precisaria ter digitado Throw New Exception,this.cn no frmlogin apenas precisaria digitar this.cn = cn;,pois queria associar o cn externo ao cn interno,geracaoid( cn, banco ) na verdade era o método gerarid( cn, banco). Esses 3 erros era apenas erros de digitação :) Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Outubro 31, 2007 Eu também to com um problema em um código de um outro mini-projeto,se você puder me ajudar... Código: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace CriarBD { public partial class frmCriarBanco : Form { //JET 4.0 - Access const string Provedor = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; const string DataSource = "\\Agenda.MDB"; /*SQL Server const string Provedor = "Provider=SQLOLEDB.1;User ID=sa;Password=;Initial " + "Catalog=Agenda;Data Source="; const string DataSource = "Agenda"; //Oracle const string Provedor = "Provider=MSDAORA.1;User ID=Admin;Password=Admin;" + "Data Source="; const string DataSource = "Agenda"; */ public frmCriarBanco() { InitializeComponent(); } public void DefinirStringConexao(DefinirBanco B) { if (Provedor.IndexOf("Jet") == -1) b.StringConexao = Provedor + DataSource; else b.StringConexao = Provedor + Dir.Path + DataSource; } private void Drive_SelectedIndexChanged(object sender, EventArgs e) { //Este é o código que sincroniza os objetos //Ao selecionar um drive,A lista de diretórios //automaticamente será atualizada de acordo Dir.Path = Drive.SelectedItem.ToString(); } private void btnCriarMDB_Click(object sender, EventArgs e) { //Inicializa a classe DefinirBanco DefinirBanco Banco = new DefinirBanco(); DefinirStringConexao(Banco); try { Banco.CriarDatabase(); MessageBox.Show("Banco criado com sucesso", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception er) { MessageBox.Show(er.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnCriarTabelas_Click(object sender, EventArgs e) { DefinirBanco Banco = new DefinirBanco(); DefinirStringConexao(Banco); //Criação da tabela de contatos DefCampo[] Contato = new DefCampo[5]; //Sintaxe mais tradicional de atribuição Contato[0].Nome = "ID_Contato"; Contato[0].Tipo = "INTEGER PRIMARY KEY"; Contato[0].Null = false; //Outra forma de atribuição(necessário ter um construtor) Contato[1] = new DefCampo("Nome", "VARCHAR(50)", false); Contato[2] = new DefCampo("Telefone_Comercial", "CHAR(11)", true); Contato[3] = new DefCampo("Telefone_Celular", "CHAR(11)", true); Contato[4] = new DefCampo("Email", "VARCHAR(50)", true); Banco.CriarTabela( "Contato", Contato); //Mais uma forma de preencher o array DefCampo[] Compromisso = new DefCampo[3] { new DefCampo( "Data_Hora", "DATE PRIMARY KEY", false ), new DefCampo( "ID_Contato", "INTEGER", false ), new DefCampo( "Lembrete", "VARCHAR(254)", false ) }; //*ATENÇÃO(;)* if (Provedor.IndexOf("SQLOLEDB") != -1) { //SQL Server não aceita DATE,apenas DATETIME Compromisso[2].Tipo = "DATETIME PRIMARY KEY"; } Banco.CriarTabela("Compromisso", Compromisso); //Mais uma forma ligeiramente diferente DefCampo[] Categoria = new DefCampo[] { new DefCampo( "Cod_Categoria", "CHAR(10) PRIMARY KEY", false ), new DefCampo( "Descricao", "VARCHAR(50)", false ) }; //*ATENÇÃO(;)* Banco.CriarTabela("Categoria", Categoria); //Criação da última tabela DefCampo[] Contato_Categoria = new DefCampo[] { new DefCampo( "ID_Contato", "INTEGER", false ), new DefCampo( "Cod_Categoria", "CHAR(10)", false ) }; //*ATENÇÃO(;)* Banco.CriarTabela("Contato_Categoria", Contato_Categoria); MessageBox.Show("Operação Concluída."); } private void btnCriarConstraints_Click(object sender, EventArgs e) { DefinirBanco Banco = new DefinirBanco(); DefinirStringConexao( Banco ); string[] Comandos = new string[] { //Cria relacionamento entre Compromisso e Contato "ALTER TABLE Compromisso " + "ADD CONSTRAINT FK_Compromisso_Contato " + "FOREIGN KEY ( ID_Contato ) " + "REFERENCES Contato( ID_Contato )", //Cria chave primária na tabela Contato_Categoria "ALTER TABLE Contato_Categoria " + "ADD CONSTRAINT PK_Contato_Categoria " + "PRIMARY KEY ( ID_Contato, Cod_Categoria )", //Criar relacionamento entre Contato_Categoria //e Contato(Chave Estrangeira) "ALTER TABLE Contato_Categoria " + "ADD CONSTRAINT FK_Contato_Categoria1 " + "FOREIGN KEY ( ID_Contato ) " + "REFERENCES Contato( ID_Contato )", //Criar relacionamento entre Contato_Categoria //e Categoria(Chave Estrangeira) "ALTER TABLE Contato_Categoria " + "ADD CONSTRAINT FK_Contato_Categoria2 " + "FOREIGN KEY ( Cod_Categoria ) " + "REFERENCES Categoria( Cod_Categoria )" }; for (int i = 0; i < Comandos.Length; i++) { try { Banco.ExecutarComando(Comandos[1]); } catch (Exception er) { MessageBox.Show(er.Message); } } //Última etapa:criação de uma tabela de geração //automática de números sequenciais //O Oracle tem uma filosofia diferente //do SQL Server e do Access if ( Provedor.IndexOf( "MSDAORA" ) != -1 ) { //Oracle Banco.ExecutarComando( "CREATE SEQUENCE ID" ); } else if ( Provedor.IndexOf( "Jet" ) != -1 ) { //Access Banco.ExecutarComando( "CREATE TABLE ID " + "( ID AUTOINCREMENT, Inutil CHAR(1) )" ); } else { //SQL Server Banco.ExecutarComando( "CREATE TABLE ID " + "( ID integer identity( 1,1 ), Inutil CHAR(1) )" ); } MessageBox.Show( "Operação Concluída." ); } } } Erro: Error 1 Inconsistent accessibility: parameter type 'CriarBD.DefinirBanco' is less accessible than method 'CriarBD.frmCriarBanco.DefinirStringConexao(CriarBD.DefinirBanco)' C:\Documents and Settings\Administrador\Meus documentos\Visual Studio 2005\Projects\CriarBD\CriarBD\Form1.cs 39 21 CriarBD Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
klaygomes 0 Denunciar post Postado Outubro 31, 2007 (...)Eu andei dando uma procurada no livro e sabe de uma coisa?Os autores do livro(Edwin Lima e Eugênio Reis) nesse código usaram este método('AjustarTipoBanco') passando como parâmetro o provedor da conexão,mas,esqueceram de criar o método,ou seja,estão usando um método que não existe blink.gif ,queria ver agora como vou criar este método,se você puder me ajudar...(...) Por isso que ele é gratuito heheh (brincadeira, exelente e-book, li ele e gostei muito da didatica do autor) Sobre o método, desculpe vou deixar este trabalho para você irá ajudar muito em seu aprendizado (mentira é que eu estou com preguiça de analisar o código para saber como este metodo deve funcionar hauahauah). (...)Não sei,talvez se deletar esta linha não geraria outros erros?(...)Com toda certeza isso não vai resolver o seu problema. Quanto ao ultimo projeto, o erro: Error 1 Inconsistent accessibility: parameter type 'CriarBD.DefinirBanco' is less accessible than method 'CriarBD.frmCriarBanco.DefinirStringConexao(CriarBD.DefinirBanco)' Uma tradução livre (despreocupada) seria algo como: Niveis de Acessibilidade Inconsistentes: O parameto do tipo 'CriarBD.DefinirBanco' e menos acessível que o metodo 'CriarBD.frmCriarBanco.DefinirStringConexao(CriarBD.DefinirBanco)' Verifique como a classe DefinirBanco foi declarada, o nível de acesso padrão para as classes no C# é private mude para protected ou até mesmo public isso irá resolver seu problema. fagnerx21, te desejo boa sorte no seu aprendizado, comecei a estudar C# à quase 2 anos atrás e até hoje sempre surgem dúvidas e só agora estou estudando para Certificação, espero que a sua curva de aprendizado seja melhor que a minha hehehehe. Ah não deixa de postar aqui no forúm vamos movimentar esta area de .net. \o/ Compartilhar este post Link para o post Compartilhar em outros sites
fagnerx21 0 Denunciar post Postado Outubro 31, 2007 Mas me de uma idéia rápida de como seria esse método ajustartipobanco,pois se for pra mim fazer não tenho idéia de como faria,o que ele faz e etc... Talvez você tenha este método no seu livro! Valeu. Compartilhar este post Link para o post Compartilhar em outros sites