Jump to content
Moneybag

Incrementador Especifico

Recommended Posts

Moneybag

Boas Pessoal

Alguém já tentou fazer um incrementado que não incremente numero mas sim letras.

Eu precisava que que o incrementador incrementasse este tipo de dados:

aaa

aab

aac

....

aaz

aa1

aa2

...

aa9

aba

...

por ai em diante... até 999

Alguém sabe como posso fazer?

Share this post


Link to post
Share on other sites
joaocarlos07

Eu tenho o codigo de auto-incrementar mas em números não sei se te da jeito para depois adaptares , se quiseres apita ;)


Um Abraço,João Carlos Pinto

Share this post


Link to post
Share on other sites
Moneybag

Eu tenho o codigo de auto-incrementar mas em números não sei se te da jeito para depois adaptares , se quiseres apita ;)

ok, agradecia imenso.

Share this post


Link to post
Share on other sites
joaocarlos07

// Incrementar 1 ao id (auto increment)
            SqlCeCommand cm = liga.CreateCommand();
            SqlCeCommand conta = liga.CreateCommand();
            conta.CommandText = "select count (id) from veiculos ";
            int quant = Convert.ToInt32(Convert.ToString(conta.ExecuteScalar()));
            long resultado;
            resultado = quant + 1;

E depois fazes o insert do resultado :

 //insert
            SqlCeCommand cmd = new SqlCeCommand("Insert into veiculos(id,matricula) values ('" + resultado.ToString() + "','" + textBox1.Text + "')", liga);
            cmd.ExecuteNonQuery();

Eu estou a trabalhar em SqlCE e o SqlCE não tem auto-incremente então tive de cria-lo eu , alguma duvida ja sabes


Um Abraço,João Carlos Pinto

Share this post


Link to post
Share on other sites
Moneybag

// Incrementar 1 ao id (auto increment)
            SqlCeCommand cm = liga.CreateCommand();
            SqlCeCommand conta = liga.CreateCommand();
            conta.CommandText = "select count (id) from veiculos ";
            int quant = Convert.ToInt32(Convert.ToString(conta.ExecuteScalar()));
            long resultado;
            resultado = quant + 1;

E depois fazes o insert do resultado :

 //insert
            SqlCeCommand cmd = new SqlCeCommand("Insert into veiculos(id,matricula) values ('" + resultado.ToString() + "','" + textBox1.Text + "')", liga);
            cmd.ExecuteNonQuery();

Eu estou a trabalhar em SqlCE e o SqlCE não tem auto-incremente então tive de cria-lo eu , alguma duvida ja sabes

obrigado, mas eu já estava a fazer um código parecido mas com ficheiros, o problema é que eu não queria utilizar nenhum tipo de suporte como base de dados ou ficheiros.

Share this post


Link to post
Share on other sites
softklin

Ascensao, não queres deixar a solução a que chegaste? Estava aqui a tentar fazer precisamente a ideia de usar caracteres, mas não consegui chegar a um resultado. Isto, para além de ficar de referência a alguém que tenha a mesma dúvida.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Moneybag

Ascensao, não queres deixar a solução a que chegaste? Estava aqui a tentar fazer precisamente a ideia de usar caracteres, mas não consegui chegar a um resultado. Isto, para além de ficar de referência a alguém que tenha a mesma dúvida.

Eu criei um ficheiro .txt com todas as combinações possíveis, e a aplicação vai buscar ao ficheiro. --' fuleiro xD

Share this post


Link to post
Share on other sites
Andrepereira9

Boas

Fiz assim uma coisa parecida  ;):D

   string[] letras = new string[] {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"};

            string a = "";
            for (int letra_1 = 0; letra_1 <= 35; letra_1++)
            {
                for (int letra_2 = 0; letra_2 <= 35; letra_2++)
                {
                    for (int letra_3 = 0; letra_3 <= 35; letra_3++)
                    {
                        // Escrever para uma variavel e depois escrever no textBox, torna-se muito mais rápido
                        a += letras[letra_1].ToString() + letras[letra_2].ToString() + letras[letra_3].ToString() + Environment.NewLine;
                        
                       //textBox1.Text += letras[letra_1].ToString() + letras[letra_2].ToString() + letras[letra_3].ToString() + Environment.NewLine;
                   }
                }
            }

            textBox1.Text = a.ToString();

        }


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Moneybag

Boas

Fiz assim uma coisa parecida  :D:thumbsup:

   string[] letras = new string[] {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"};

            string a = "";
            for (int letra_1 = 0; letra_1 <= 35; letra_1++)
            {
                for (int letra_2 = 0; letra_2 <= 35; letra_2++)
                {
                    for (int letra_3 = 0; letra_3 <= 35; letra_3++)
                    {
                        // Escrever para uma variavel e depois escrever no textBox, torna-se muito mais rápido
                        a += letras[letra_1].ToString() + letras[letra_2].ToString() + letras[letra_3].ToString() + Environment.NewLine;
                        
                       //textBox1.Text += letras[letra_1].ToString() + letras[letra_2].ToString() + letras[letra_3].ToString() + Environment.NewLine;
                   }
                }
            }

            textBox1.Text = a.ToString();

        }

perfect  ;)

Share this post


Link to post
Share on other sites
softklin

Só para deixar o meu contributo ao tópico: quando entrei para a faculdade, ensinaram-se que o uso da classe StringBuilder em Java era mais eficiente do que fazer a concatenação. Este é um excelente exemplo desta situação.

A classe StringBuilder também existe em C#. Por exemplo, o código contribuído pelo André Pereira utilizando Stringbuilder ficava:

string[] letras = new string[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
            StringBuilder sb = new StringBuilder();

            for (int letra_1 = 0; letra_1 <= 35; letra_1++)
            {
                for (int letra_2 = 0; letra_2 <= 35; letra_2++)
                {
                    for (int letra_3 = 0; letra_3 <= 35; letra_3++)
                    {
                        sb.AppendLine(letras[letra_1].ToString() + letras[letra_2].ToString() + letras[letra_3].ToString());
                    }
                }
            }

Comparando os tempos, através de uma estrutura DateTime, a versão com StringBuilder demorou 11 milissegundos contra os 15000 e tal milissegundos (15 segundos!) da versão com concatenações de strings.

Embora não ajude directamente no tópico, fica a dica como referência para quando necessitarem de fazer elevadas quantidades de concatenações.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites

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.