Ir para conteúdo

POWERED BY:

Arquivado

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

jcrf

Erro a tabela não tem chave primária

Recommended Posts

o erro é disparado na linha 7 do evento do botão localizar

Public Class frm_filtrar_ordem_de_servico
   Private Tabela_equipamentos As [string] = "clientes"
   Private Campo_id As [string] = "Id"
   Private Campo_N_de_Serie As [string] = "NOME"
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim conn As New MySqlConnection("server = localhost;userid=root;password=jcbest;database=wrcopiadoras1")
       Dim strsql As String = "SELECT clientes.Id,clientes.NOME,clientes.endereco,clientes.cidade,clientes.Telefone,clientes.Contrato, equipamentos.* FROM equipamentos Right join clientes on equipamentos.Identificacao_Cliente = clientes.Id"
       Dim da As New MySqlDataAdapter(strsql, conn)

       Dim dt As New DataTable(Tabela_equipamentos)
       da.Fill(dt)
       da.FillSchema(dt, SchemaType.Source)

       dgvresult.DataSource = dt.DefaultView
       cbocliente.DataSource = dt
       cbocliente.ValueMember = Campo_N_de_Serie
       cbocliente.DisplayMember = Campo_N_de_Serie
   End Sub

   Private Sub btnlocalizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlocalizar.Click
       Dim dt As DataTable = CType(dgvresult.DataSource, DataView).Table
       Dim filtro As [string] = Campo_N_de_Serie & "='" & cbocliente.Text & "'"
       Dim drc As DataRow() = dt.Select(filtro)
       Dim contador As Integer = 0
       Dim linha As DataRow
       For Each linha In drc
           [b]Dim RegistroLocalizado As DataRow = dt.Rows.Find(linha(Campo_id))[/b][u][/u]
           If Not (RegistroLocalizado Is Nothing) Then
               contador = contador + 1
           End If
       Next linha
       Dim dv As New DataView(dt)
       dv.RowFilter = filtro
       dgvresult.DataSource = dv
   End Sub
End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

para evitar isso você pode adicionar uma chave primária para o datatable:

 

C#

DataColumn[] keys = new DataColumn[1];
keys[0] = pDt.Columns["pColumnName"];
pDt.PrimaryKey = keys;

vb

Dim keys As DataColumn() = New DataColumn(0) {}
keys(0) = pDt.Columns("pColumnName")
pDt.PrimaryKey = keys

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.