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