Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fagnerx21

Problemas com ArrayList!

Recommended Posts

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

Você inseriu uma referencia ao ns collections?

 

using System.Collections;

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

É 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

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

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

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

(...)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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.