28-06-2011, 01:03
Boa noite a todos eu estou aqui num dilema com um código que ja dei a volta a cabeça e nao saiu do sitio :x eu estou a criar um software para pda em c# , é o seguinte eu tenho o meu form das vendas e o utilizador pode inserir os produtos que quer comprar manualmente seleccionando o produto ou entao pode passar o codigo de barras , seleccionar os produtos ja funciona o codigo de barras é que esta a dar mais trabalho :x basicamente o que o codigo de barras faz é escrever onde estiver o ponteiro o numero que lé o leitor de barras ou seja a minha ideia foi meter uma textbox, onde sempre que fazia alguma coisa no fim fazia textbox1.focus() ou seja a textbox esta sempre pronta para passar o artigo no leitor , é o seguinte eu fiz um codigo no evento da textbox so que não funciona bem quando passo o artigo por vezes insere em branco outras vezes insere-me por exemplo 3 vezes o mesmo artigo so passando uma vez o leitor . Se alguem me poder ajudar agradeço espero ter sido claro mas alguma duvida é so dizer
Código:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
}
else
{
//verificar se ja existe
liga.Open();
//pesquisa na BD
SqlCeCommand cmd700 = liga.CreateCommand();
SqlCeCommand conta100 = liga.CreateCommand();
conta100.CommandText = " SELECT COUNT([codbarras]) AS TOTAL FROM [vendas] Where [codbarras] = '" + textBox1.Text + "' ";
int quant1 = Convert.ToInt32(Convert.ToString(conta100.ExecuteScalar()));
//select para guardar em variaveis o nome do produto e o preco para depois inserir
SqlCeCommand cmd312 = new SqlCeCommand(" SELECT [nome],[preco] FROM [produtos] WHERE [codbarras] = '" + textBox1.Text + "' ", liga);
SqlCeDataReader dr312 = cmd312.ExecuteReader();
//percorre o sqldatareader para obter os dados
while (dr312.Read())
{
nome = Convert.ToString(dr312["nome"]);
preco = Convert.ToString(dr312["preco"]);
}
if (quant1 > 0)
{
MessageBox.Show(" Produto ja inserido ");
}
else
{
//Insert
SqlCeCommand cmdd = new SqlCeCommand(" INSERT into vendas (codbarras,quantidade,nome,preco) VALUES ('" + textBox1.Text + "' , '" + 1 + "', '" + nome + "','" + preco + "' )", liga);
cmdd.ExecuteNonQuery();
liga.Close();