none
VALIDAR EMAIL DATAGRIDVIEW VBA/SQL SERVER RRS feed

  • Pergunta

  • Hi,
       o meu código consiste na importação de um(ou mais) ficheiro(s) xlsx (excel) para uma datagridview no VBA, e depois guardar esses dados no SQL Server. A minha dúvida está: [b] <B>como é que faço para validar os emails após serem importados para a datagridview mas antes de serem guardados no SQL[/b] como é que faço para validar os emails após serem importados para a datagridview mas antes de serem guardados no SQL</b> , para quando forem para o server vão apenas as informações respetivas aos usuários com endereços de email válidos. Sendo que um endereço válido é:
     (no minimo 1 caracter)@(no minimo 3 caracteres).(no minimo 2 caracteres) --> sendo aceite tanto números como letras, e podendo o domínio conter vários sub-domínios desde que sigam a mesma regra.
    Este é o meu código até agora: 

    Imports System.IO
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    Public Class Importar

        Dim conn As OleDbConnection
        Dim dtr As OleDbDataReader
        Dim dta As OleDbDataAdapter
        Dim dts As DataSet
        Dim excel As String
        Dim counter As Integer
        Dim totalR As Integer

        '------------------------------------------------------------------BOTÃO PARA IMPORTAR DADOS EXCEL PARA DATAGRIDVIEW----------------------------------------------------------------------'
        Private Sub btnImportar_Click(sender As Object, e As EventArgs) Handles btnImportar.Click
            OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments '"C:\Users\Utilizador\Documents" 
            OpenFileDialog1.Filter = "All Files (*.*)|*.*|Excel files (*.xlsx)|*.xlsx|CSV Files (*.csv)|*.csv|XLS Files (*.xls)|*xls"
            If (OpenFileDialog1.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
                Dim fi As New FileInfo(OpenFileDialog1.FileName)
                Dim FileName As String = OpenFileDialog1.FileName
                excel = fi.FullName
                conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;") 'provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\vb.net-informations.xls';Extended Properties=Excel 8.0;") 
                dta = New OleDbDataAdapter("Select * From [Folha1$]", conn)
                dts = New DataSet
                dta.Fill(dts, "[Folha1$]")
                dtgFicheiro.DataSource = dts
                dtgFicheiro.DataMember = "[Folha1$]"
            End If
            conn.Close()
            dtgFicheiro.Columns(0).Name = "ID"
            dtgFicheiro.Columns(1).Name = "Nome"
            dtgFicheiro.Columns(2).Name = "Email"
            totalR = dtgFicheiro.Rows.Count
            MessageBox.Show("O ficheiro tem um total de " & totalR & "linhas.")
            btnValidar.Enabled = True
            btnImportar.Enabled = False
        End Sub



        '-----------------------------------------------------------------------EXPORTAR DADOS PARA SQL SERVER-------------------------------------------------------------------'
        Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
            For Each Row As DataGridViewRow In dtgFicheiro.Rows
                Dim constring As String = "Data Source=DESKTOP-NMOL9GQ\SQLEXPRESS;Initial Catalog=EMAILS;INTEGRATED SECURITY=SSPI"
                Using con As New SqlConnection(constring)
                    Using cmd As New SqlCommand(" INSERT INTO MAILS VALUES (@ID, @Nome, @Emails)", con)
                        cmd.Parameters.Clear()
                        cmd.Parameters.AddWithValue("@ID", Row.Cells("ID").Value)
                        cmd.Parameters.AddWithValue("@Nome", Row.Cells("Nome").Value)
                        cmd.Parameters.AddWithValue("@Emails", Row.Cells("Email").Value)
                        con.Open()
                        cmd.ExecuteNonQuery()
                        con.Close()
                    End Using
                End Using
            Next
            MessageBox.Show("Registos guardados.")
        End Sub

        Private Sub btnSair_Click(sender As Object, e As EventArgs) Handles btnSair.Click
            Close()
        End Sub


    End Class
    terça-feira, 31 de maio de 2016 14:01