Ir para conteúdo

Arquivado

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

MestreOryon

[Resolvido] C# + Acess

Recommended Posts

Pessoal, eu sou novo em C# e estou bem perdido, peço que desculpem a minha ignorância e me ajudem.

 

 

Eu li algumas coisas e conectei o c# no acess pelo visual studio, consigo fazer consultas e etc....tudo certinho, então me veio um problema... como eu uso só uma coluna de uma consulta que fiz?

 

 

código

result = funcionáriosTableAdapter.FillByLogin(databaseDataSet.Funcionários, cPFTextBox.Text, senhaTextBox.Text);

if (result == 1)

{

 

}

tabela 1

 

Código , Nome, CPF, Senha

 

tabela 2

 

Código , hora, data, conta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na hora de consultar selecione só uma coluna.

 

SELECT <coluna> FROM <tabela> WHERE <condição>

 

entendi, mas não tem como eu usar minha consulta anterior?

 

para não ficar acumulando dados e também preciso que ela atenda as condições que fiz anteriormente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vai acumular dados se você criar um método que faça a consulta universalmente.

 

Exemplo:

 

Public DataSet QueryStart(String SQL) {

DataSet ds = new DataSet;
OleDbConnection Con = new OleDbConnection("<ConectionString>");
OleDbDataAdapter da = new OleDbDataAdapter(SQL,Con);
da.fill(ds);
Return ds

}

 

 

Usei object porque você pode retornar isso de N maneiras diferentes. Dai você chama:

 

QueryStart("SELECT CPF FROM <tabela> WHERE <condição>");

 

Você pode atribuir este valor para uma variável ou então um arrayList caso precise de vários valores:

 

String CPF = QueryStart("SELECT CPF FROM <tabela>").Tables[0].Rows[<index>].Tostring();

 

Para evitar que dados se acumulem ou algo extra que você não queira, use o Dispose() em alguma coisa que você não vai mais usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vai acumular dados se você criar um método que faça a consulta universalmente.

 

Exemplo:

 

Public DataSet QueryStart(String SQL) {

DataSet ds = new DataSet;
OleDbConnection Con = new OleDbConnection("<ConectionString>");
OleDbDataAdapter da = new OleDbDataAdapter(SQL,Con);
da.fill(ds);
Return ds

}

 

 

Usei object porque você pode retornar isso de N maneiras diferentes. Dai você chama:

 

QueryStart("SELECT CPF FROM <tabela> WHERE <condição>");

 

Você pode atribuir este valor para uma variável ou então um arrayList caso precise de vários valores:

 

String CPF = QueryStart("SELECT CPF FROM <tabela>").Tables[0].Rows[<index>].Tostring();

 

Para evitar que dados se acumulem ou algo extra que você não queira, use o Dispose() em alguma coisa que você não vai mais usar.

 

Obrigado Khaos! Vou testar aqui e logo posto os resultados

 

Khaos, o que eu queria era o seguinte... talvez eu esteja te entendendo errado, então me desculpe se for o caso, eu realizei uma consulta com condição.

 

 

SELECT * FROM Funcionários WHERE (CPF = ?) AND (Senha = ?)

 

depois fiz um if, então se voltar um resultado dessa tabela eu executo o código...

 

eu quero criar outro if que se for a coluna tipo = saída, então eu executo outro código...O problema é que estou usando table adapter, então ele o visual estudio já criou conexão e tudo mais. Confesso que estou um pouco confuso, pois eu só programo em php/html/FPGA e um pouco de C(ANSI);

 

 

código do meu botão

 

private void button1_Click(object sender, EventArgs e)

{

int result = funcionáriosTableAdapter.FillByLogin(databaseDataSet.Funcionários, cPFTextBox.Text, senhaTextBox.Text);

 

 

if (result == 1)

{

 

 

}

else {

MessageBox.Show("Usuário não encontrado! Tente novamente");

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando a mesma lógica que eu passei, esqueça o table adapter e faça assim:

 

if QueryStart("SELECT * FROM Funcionários WHERE CPF = ? AND Senha = ?").Rows.Count == 1 {

//Seu código

}

else {

//Código

}

 

 

Claro que você vai ter que criar o método acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

De nada ;)

 

Estou sempre pronto a ajudar novos talentos, nunca se sabe, mas sempre alguem pode emergir desse mundo de códigos e se tornar o novo Bill Gates da industria da informática kkk

 

Uma dica cara é não usar o wizard de criação de BD do VS. Ele suja muito o código e fica dificil trabalhar com os table adapters e os datasets que ele cria, melhor fazer tudo na mão mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito simples:

 

Faça o if com este método:

 

QueryStart("SELECT * FROM Funcionários WHERE CPF = ? AND Senha = ?").Rows[<numero da linha>].Item["Nome da coluna"].Tostring()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Khaos, obrigado pela sua atenção, mas a coisa aqui esta complicada....

 

 

Tô boiando muito... estou tentando SqlServer, mas mesmo assim ta uma droga...

 

public DataTable ListaGrid() 
       {

           _Sql = "SELECT [idponto]AS ID, [Funcionario]AS Funcionário, [Entrada], [saida] As Saída FROM Ponto WHERE @cpf = Funcionario ORDER BY idponto DESC";
           SqlCommand cmd = new SqlCommand(_Sql, sqlCoon);
           string user = "";
           user = usertextbox.Text;


               cmd.Parameters.Add("@cpf", SqlDbType.VarChar).Value = user;
               SqlDataAdapter adpp = new SqlDataAdapter(cmd);
               DataTable dt = new DataTable();
               adpp.Fill(dt);

               return dt;


       }

 

como ficaria se eu quisesse pegar uma coluna desse select e fazer um if

 

if (Saída == ""){

preencho a saída com um update
}
else 
{
crio uma nova linha e preencho a entrada
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só usar dentro de um if:

 

if (Saída == QueryStart(<SQL>).Rows[Numero da linha].Item["Nome da coluna"].Tostring()){

preencho a saída com um update
}
else 
{
crio uma nova linha e preencho a entrada
} 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado khaos!

 

 

você sabe pqe esse update não funciona?

 

using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication2
{
   public partial class Form2 : Form
   {
       #region Conexão
       SqlConnection sqlCoon = null;
       private string strCoon = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Elisângela\Documents\Visual Studio 2010\Projects\WindowsFormsApplication2\WindowsFormsApplication2\bd\Funcionarios.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
       private string _Sql = string.Empty;
       string saida = "";
       string id = "";
       DateTime agora = DateTime.Now;



       #endregion

       public Form2()
       {
           InitializeComponent();
       }

       private void button1_Click(object sender, EventArgs e)
       {
           Application.Exit();

       }

       public void Form2_Load(object sender, EventArgs e)
       {

              sqlCoon = new SqlConnection(strCoon);
               sqlCoon.Open();

               _Sql = "SELECT TOP 1 [idponto], [Funcionario], [Entrada], [saida] FROM Ponto WHERE @cpf = Funcionario ORDER BY idponto DESC";
               SqlCommand cmd = new SqlCommand(_Sql, sqlCoon);
               string user = "";
               user = "41398039837";


               cmd.Parameters.Add("@cpf", SqlDbType.VarChar).Value = user;

               SqlDataReader dr = cmd.ExecuteReader();

               while (dr.Read())
               {

                   id = dr[0].ToString();
                   saida = dr[3].ToString();
               }



               lbcpf.Text = id + "-" + saida;
               if (saida == "")
               {

                   testDB();


               }
               else
               {

                   //MessageBox.Show("Existem dados na Saída"+"-"+ agora.ToLongDateString());
                   //_Sql = "INSERT INTO Ponto, (Funcionario, Entrada) VALUES (@func, @entrada)";
                   //SqlCommand objcmd = new SqlCommand(_Sql, sqlCoon);
                   //objcmd.Parameters.Add("@func", SqlDbType.VarChar).Value = "41398039837";
                   //objcmd.Parameters.Add("@entrada", SqlDbType.VarChar).Value = agora.ToShortTimeString();



               }


       }

           public bool update(ArrayList p_arrupdate) {

               MessageBox.Show("Saída Vazia");

               _Sql = "UPDATE Ponto,  Saida = @saida WHERE idponto = @id";

               SqlCommand objcmd = new SqlCommand(_Sql, sqlCoon);

               objcmd.Parameters.Add(new SqlParameter("@saida", p_arrupdate[0]));
               objcmd.Parameters.Add(new SqlParameter("@id", p_arrupdate[1]));



               return true;

           }
               public void testDB(){



                   Update();

                   ArrayList arr = new ArrayList();
                   arr.Add(agora.ToShortTimeString());
                   arr.Add(1);



                   if (update(arr))
                   {

                       MessageBox.Show("Saída marcada com sucesso");


                   }
                   else {

                       MessageBox.Show("A Saída não foi marcada", "Erro");

                   }

               }


   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

MestreOryon comece a usar a tga CODE por favor. Deixará o post legível.

 

E não use o mesmo tópico para tirar todas suas dúvidas que tiver daqui pra frente. Separe em assuntos, crie tópicos novos para dúvidas novas.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

MestreOryon comece a usar a tga CODE por favor. Deixará o post legível.

 

E não use o mesmo tópico para tirar todas suas dúvidas que tiver daqui pra frente. Separe em assuntos, crie tópicos novos para dúvidas novas.

 

Abraços...

Claro, usarei a tag como solicitado!

 

Obrigado pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais ou menos aqui:

 

 

public bool update(ArrayList p_arrupdate) {

               MessageBox.Show("Saída Vazia");

               _Sql = "UPDATE Ponto,  Saida = @saida WHERE idponto = @id";

               SqlCommand objcmd = new SqlCommand(_Sql, sqlCoon);

               objcmd.Parameters.Add(new SqlParameter("@saida", p_arrupdate[0]));
               objcmd.Parameters.Add(new SqlParameter("@id", p_arrupdate[1]));

               <conexão>.Open();
               objcmd.ExecuteNonQuery();
               <conexão>.Close();

               return true;

           }

 

 

 

 <conexão>.Open();
               objcmd.ExecuteNonQuery();
               <conexão>.Close();

 

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.