Jump to content
dipacheco

SQL if NULL

Recommended Posts

dipacheco

Olá pessoal! Criei uma BD em SQL com os campos Codigo, Nome, Turma e Ano!

Consigo chegar e consultar na BD sem problemas.

Agora estava a criar um form para inserção e estou com alguns problemas.

O que eu quero é que o user entre com um codigo. Se o codigo existe eu mostro os dados e, caso ele queira alterar, coloca os novos e grava. Caso ele coloque um codigo inexistente ele mostra as textbox em branco e se ele colocar algo ele adiciona à BD.

Entao criei duas funçoes diferentes, uma para inserção que seria chamada caso a textbox1 ficasse vazia e uma actualiza que era chamada caso a textbox1 ficasse com um nome, que seria sinal d existencia de dados. No entanto, mesmo quando vazia ele chama a actualiza... o q poderá ser?

Share this post


Link to post
Share on other sites
ribeiro55

O que diferencia uma actualização de uma adição é, respectivamente, a existência ou não daquele código em específico.

Precisas de procurar por o código antes para determinar se actualizas ou crias. Como estás a fazer este teste?


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
dipacheco

command = New SqlCommand("SELECT Nome,Ano,Turma FROM Clientes WHERE Codigo=" & Form1.TextBox1.Text, connect)
        reader = command.ExecuteReader()
        While reader.Read()

            TextBox1.Text = reader(0).ToString
            TextBox2.Text = reader(1).ToString
            TextBox3.Text = reader(2).ToString
            If TextBox1.Text = "" then
                     insere()
            Else
                     actualiza()
            End If
        End While

        ...

Share this post


Link to post
Share on other sites
ribeiro55

Não precisas de trazer a tabela toda, nem preencher textboxes para determinar a existência de um código.

"SELECT COUNT(Codigo) FROM Clientes WHERE Codigo=" & Form1.TextBox1.Text

Faz o trabalho, sendo preciso apenas consultar a primeira coluna da primeira linha.

Caso esse valor seja =0 então Insere.

Caso esse valor seja >0 então Actualiza


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
dipacheco

e dps testo como? faço um reader = command.executereader()

if reader(0) = 0 then

  insere()

else

  actualiza()

end if

????

é que se for assim nao funciona tambem!

Share this post


Link to post
Share on other sites
dipacheco

ja ultrapassei o prob... mas agora estou com outro. LOL quando estou a inserir tenho a seguinte funçao.

    Private Sub insere()

        insert = "INSERT INTO Clientes (Codigo,Nome,Ano,Turma) VALUES (" & Form1.TextBox1.Text & "," & TextBox1.Text & "," & TextBox2.Text & "," & TextBox3.Text & ")"

        connect = New SqlConnection("Data Source=PACHECO-PC\SQLEXPRESS;Initial Catalog=TLopes;Integrated Security=True")

        connect.Open()

        command = New SqlCommand(insert, connect)

        command.ExecuteNonQuery()

        connect.Close()

    End Sub

Mas dá-me um erro no command.executenonquery que é SQLException was unhandled. The name "Diogo" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.

Share this post


Link to post
Share on other sites
ribeiro55

Das duas uma:

Ou adicionas os valores via parâmetros, ou tens de usar plicas (') para delimitar as colunas de texto.

"INSERT INTO Clientes (Codigo,Nome,Ano,Turma) VALUES (" & Form1.TextBox1.Text & ",[glow=red,2,300]'[/glow]" & TextBox1.Text & "[glow=red,2,300]'[/glow]," & TextBox2.Text & "," & TextBox3.Text & ")"

Presumindo que apenas a coluna nome é alfanumérica (varchar)


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

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.