Ir para o conteúdo
Chamuanza

Apagar Registo de BD SQL

Mensagens Recomendadas

Chamuanza

Oi Pessoal

:wallbash: Preciso de uma ajudinha

Não consigo apagar um registo directamente da BD que se encontra repetido com aparece-me este erro

errosql.gif

Como fazer? Se é que se pode fazer alguma coisa

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Isso acontece porque tens mais do que um registo exactamente igual na mesma tabela, devias utilizar um campo chave primaria, ou entao faz por codigo SQL


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Chamuanza

Isto não dá nada

Acrescentei uma coluna para numerar as linhas e atribuir a chave primaria, mas mesmo assim não me deixa nem apagar nem me deixa atribuir um valor as duas linhas(registos) que são iguais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
morsa

Dava jeito se colocasses aqui o código DDL que cria a tabela. Doutra forma é quase como adivinhar :(

No limite, basta teres uma chave forasteira ligada a essa tabela a esse tuplo em concreto e dá logo barraca. Manda o código da tabela para podermos ajudar.

1abraço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Chamuanza

Oi Morsa

Não entendo o que queres dizer com código DDL

A tabela (Datagrid) foi criada via Wizard e abre com o form

Estou a tentar apagar com codigo como disse o Caça utilizando este codigo

 Private Sub BindingNavigatorDeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorDeleteItem.Click


        ' Texto de ligação à base de dados 
        Dim myConnectionString As String = _
           "Data Source=.\SQLEXPRESS;AttachDbFilename='D:\ProjectoTotoMilhoes\TotoMilhões\GuardarResultados.mdf';" & _
          ";Integrated Security=True;User Instance=True"


        ' Comando que irá apagar todos os dados na tabela "MyTable" em que o campo 
        ' "username" é igual ao parâmetros posteriormente indicado 
        Dim SQL As String = "DELETE FROM SaidosEuromilhoes WHERE [id] = @Null"

        ' Cria uma nova ligação à base de dados 
        Dim connection As New SqlConnection(myConnectionString)

        ' Criação do comando indicando a instrução e a ligação 
        Dim command As New SqlCommand(SQL, connection)

        ' Indicação do parâmetro que irá ser apagado 
        command.Parameters.Add("@Id", SqlDbType.Char).Value = "@Null"

        ' Abre a ligação, executa o comando e guarda em "x" o número de registos eliminados 
        connection.Open()
        'Dim x As Integer = command.ExecuteNonQuery()
        Dim x As Integer = command.ExecuteScalar()
        If x < 1 Then
            MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        End If

        ' Fecha a ligação e limpa as variáveis 
        connection.Close()
        connection = Nothing
        command = Nothing



    End Sub

mas da este erro  - Must declare the scalar variable "@Null".

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Eu não me estava a referir a código VB mas sim a código SQL, tipo

DELETE FROM Tabela WHERE ID = ID


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Ok, então troca

command.Parameters.Add("@Id", SqlDbType.Char).Value = "@Null"

por

command.Parameters.Add("@Null", SqlDbType.Char).Value = "ID_a_Apagar"


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Chamuanza

Oi Caça o problema e que a tabela que tenho está assim, depois de atribuir a coluna ID não consegui dar valor aos 2 pimeiros registos, assim não consigo seguir o teu exemplo

Data                                NS1  NS2  NS3 NS4  NS5  ES1 ES2    ID

2011-07-05 0:00:00 11 28 29 47 49 1 5 NULL

2011-07-05 0:00:00 11 28 29 47 49 1 5 NULL

2011-03-25 0:00:00 6 12 21 27 33 3 7 1

2011-04-01 0:00:00 4 17 21 22 33 4 8 2

2011-04-08 0:00:00 21 23 38 47 50 2 6 3

2011-04-15 0:00:00 4 6 21 39 41 2 6 4

2011-04-22 0:00:00 11 22 36 45 48 1 4 5

2011-05-06 0:00:00 11 16 20 22 28 4 9 6

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

O ID era um exemplo, ai tens de colocar os campos onde queres filtrar, por exemplo, se quiseres apagar todos os registos que tenham o campo NS1 = 11, coloca.

WHERE NSI = 11


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.