none
Criar tabela sqlserver a partir dados access RRS feed

  • Pergunta

  • Boa tarde pessoal, sou novo na area de programação e estou meio confuso.Tenho esse codigo abaixo e preciso pegar os dados retornados da função dv (datagrid) e gerar uma tabela no Sqlserver 2000, será que alguém pode me ajudar.
    vou tentar ser mais especifico:

    - Fiz uma conexão Ole DB para um arquivo access

    -Tenho uma função que faz select nos dados que preciso e retorna um data grid chamado DV.

    -Preciso agora abrir uma conexão sql

    -Fazer insert into com a sinformações que estão nesse datagrid chamado DV.

    -Preciso ler esse datagrid linha a linha e gerar uma tabela do sqlserver 2000 com esses dados


    Imports System.Web.Security
    Imports System.Data.SqlClient
    Imports System.Data.SqlClient.SqlException
    Imports System.Data.SqlClient.SqlDataReader
    Imports System.Data
    Imports System.Data.OleDb
    Partial Class CF_FolhaIndividula6
        Inherits System.Web.UI.Page
        Public conexao As SqlClient.SqlConnection
        Public dr As SqlClient.SqlDataReader
        Public comando As SqlClient.SqlCommand
        Public strconexao As String = System.Configuration.ConfigurationSettings.AppSettings("conexao")
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            recebe_cookies()
            Dim vMatricula, vMesini, vdata_ini, vdata_fim, vexercicio As String
            vMatricula = lblMatricula.Text
            vdata_ini = "16/01/2000"
            vdata_fim = "15/02/2000"
            vMesini = lblMes.Text
            vexercicio = lblAno.Text

            Select Case vMesini
                Case "Janeiro"
                    vMesini = "01"
                Case "Fevereiro"
                    vMesini = "02"
                Case "Março"
                    vMesini = "03"
                Case "Abril"
                    vMesini = "04"
                Case "Maio"
                    vMesini = "05"
                Case "Junho"
                    vMesini = "06"
                Case "Julho"
                    vMesini = "07"
                Case "Agosto"
                    vMesini = "08"
                Case "Setembro"
                    vMesini = "09"
                Case "Outubro"
                    vMesini = "10"
                Case "Novembro"
                    vMesini = "11"
                Case "Dezembro"
                    vMesini = "12"
            End Select

            If vMesini = "01" Then
                vdata_ini = Mid(vdata_ini, 1, 4) + "12/" + Str(Val(Mid(vexercicio, 1, 4)) - 1)
            Else
                vdata_ini = Mid(vdata_ini, 1, 3) + LTrim(Str(Val(vMesini) - 1)) + "/" + Mid(vexercicio, 1, 4)
            End If
            vdata_fim = Mid(vdata_fim, 1, 3) + vMesini + "/" + Mid(vexercicio, 1, 4)
            vdata_fim = Mid(vdata_fim, 1, 3) + vMesini + "/" + Mid(vexercicio, 1, 4)

            '**************************
           
            If Not IsPostBack Then 'verdade a primeira vez que o Browse carrega a pagina vincula o grid aos dados
                DataGrid1.DataSource = GetDataSource(vMatricula, vdata_ini, vdata_fim)
                DataGrid1.DataBind()

            
    'Pessoal até aqui ele gera um datagrid e apresenta os dados, agora não sei como pegar esses dados do datagrid e 
    gerar uma tabela no sql server 2000.
        
           

        End Sub
        Protected Function GetDataSource(ByVal vmatricula, ByVal vdata_ini, ByVal vdata_fim) As System.Collections.ICollection
            ' abre uma conexao
            Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=u:\tradenet.mdb"
            Dim cn As OleDbConnection = New OleDbConnection(strConnection)
            cn.Open()
            'define um objeto dataAdapater
            Dim strSql As String = "select * from tb_atvltr where cod_cadusu = " + vmatricula + " and ((year(dta_hor_atvltr) = " + RTrim(Str(Year(vdata_ini))) + ") or (year(dta_hor_atvltr) = " + RTrim(Str(Year(vdata_fim))) + ")) and ((month(dta_hor_atvltr) = " + RTrim(Str(Month(vdata_ini))) + ") or (month(dta_hor_atvltr) = " + RTrim(Str(Month(vdata_fim))) + ")) "
            Dim da As OleDbDataAdapter = New OleDbDataAdapter(strSql, cn)

            ' Carrega o DataSet
            Dim ds As DataSet = New DataSet()
            da.Fill(ds, "atvteste")

            'fecha a conexao
            cn.Close()

            'envolve o objeto Datatable Atvteste em um objeto DataView
            Dim dv As New DataView(ds.Tables("atvteste"))
            Return dv

        End Function
        Sub recebe_cookies()
            Try
                lblMatricula.Text = Request.Cookies("SEGURANCA")("matricula")
                lblNome.Text = Request.Cookies("SEGURANCA")("Nome")
                lblSecretaria.Text = Request.Cookies("SEGURANCA")("secretaria")
                lblCarga_Ho.Text = Request.Cookies("SEGURANCA")("Carga_ho")
                lblSecao.Text = Request.Cookies("SEGURANCA")("secao")
                lblAdmissao.Text = Request.Cookies("SEGURANCA")("Admissao")
                lblProvimento.Text = Request.Cookies("SEGURANCA")("Provimento")
                lblCargo.Text = Request.Cookies("SEGURANCA")("cargo")
                lblMes.Text = Request.Cookies("SEGURANCA")("vMES")
                lblAno.Text = Request.Cookies("SEGURANCA")("txtExercicio.text")
                lblInicio01.Text = Request.Cookies("SEGURANCA")("INICIO01")
                lblFim01.Text = Request.Cookies("SEGURANCA")("FIM01")
                lblinicio02.Text = Request.Cookies("SEGURANCA")("INICIO02")
                lblFim02.Text = Request.Cookies("SEGURANCA")("FIM02")

            Catch
                ' lblMsg.Text = "Erro ao executar o procedimento (Recebe Cookies). Tente novamente mais tarde"
            End Try

        End Sub
    End Class

    essa parte que comecei deu erro:
    *******essa parte não deu certo***********
     'conexao = New SqlClient.SqlConnection(strconexao)
    ' conexao.Open()
    'Dim sql As String = "INSERT INTO Tabela dr(dta_hor_atvltr), dr(cod_cadusu), dr(cod_leitor), 'dr(cod_evento),dr(idt_atvltr),dr(tpo_id_atvltr), dr(sts_alr_atvltr), dr(sts_alr_atvltr)"
    'comando = New SqlClient.SqlCommand(sql, conexao)
    ' dr = comando.ExecuteReader()
    'Dim dt As New DataTable("atvteste")
    'Dim dtCopia As DataTable = dt.Clone()
    'DataGrid1.DataSource = dtCopia.DefaultView

    '*************

    quem puder ajudar eu agradeço
    sexta-feira, 12 de setembro de 2008 19:41

Respostas

  • Oliver,

     

    Você pode fazer isso só com comandos do T-SQL utilizando OPENROWSET. Por exemplo, o comando abaixo cria a tabela NomeNovaTabela com base em uma consulta em uma tabela dentro de um arquivo MDB.

     

    SELECT * INTO NomeNovaTabela FROM

    OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\pasta\bd.mdb'; 'usuario'; 'senha', NomeTabelaMDB)

    Uma outra alternativa é utilizar o DTS do SQL Server 2000.

     

    Não sei se é isso que você necessita, espero ter ajudado.

     

    Att.

     

    Ari C. Raimundo

    • Marcado como Resposta oliverjer10 quarta-feira, 18 de fevereiro de 2009 16:58
    sábado, 13 de setembro de 2008 02:52
  • Oi Oliver,

     

    Se você fizer o SELECT INTO usando OPENROWSET com a conexão do SQL Server aberta a tabela será criada na base de dados da instância que o SQL Server Native Client estiver conectado. Se é isso então resolveu, já testou ?

     

    Att.

     

    Ari C. Raimundo

    • Marcado como Resposta oliverjer10 quarta-feira, 18 de fevereiro de 2009 16:57
    quarta-feira, 17 de setembro de 2008 01:56

Todas as Respostas

  • Oliver,

     

    Você pode fazer isso só com comandos do T-SQL utilizando OPENROWSET. Por exemplo, o comando abaixo cria a tabela NomeNovaTabela com base em uma consulta em uma tabela dentro de um arquivo MDB.

     

    SELECT * INTO NomeNovaTabela FROM

    OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\pasta\bd.mdb'; 'usuario'; 'senha', NomeTabelaMDB)

    Uma outra alternativa é utilizar o DTS do SQL Server 2000.

     

    Não sei se é isso que você necessita, espero ter ajudado.

     

    Att.

     

    Ari C. Raimundo

    • Marcado como Resposta oliverjer10 quarta-feira, 18 de fevereiro de 2009 16:58
    sábado, 13 de setembro de 2008 02:52
  • Boa Tarde, ajudou sim Ari, muito obrigado !

     

    Só uma dúvida está linha abaixo eu digito com a conexão do SQLserver aberto para ele criar a tabela no sql.

    Se essa nova tabela for gerada dentro do sql ou até mesmo no micro do usuário ex: c:\arquivos\nomeTabelaMDB,

    resolveu a questão.

    SELECT * INTO NomeNovaTabela FROM

    OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\pasta\bd.mdb'; 'usuario'; 'senha', NomeTabelaMDB)

     

    E no caso do DTS Ari eu até consigui criar um pacote no DTS, mas só pelo enterprise ambiente grafico, mas não sei como colocar a linha que chama esse pacote do DTS no VB.net

    E na hora de fazer o DTS se eu pedir para gerar um script vb não sei também como chamar esse script dentro do programa.

     

    Agradeço a atenção e se puderem me dar uma orientação a mais a respeito,

    Muito obrigado.

     

     

     

     

    segunda-feira, 15 de setembro de 2008 16:04
  • Oi Oliver,

     

    Se você fizer o SELECT INTO usando OPENROWSET com a conexão do SQL Server aberta a tabela será criada na base de dados da instância que o SQL Server Native Client estiver conectado. Se é isso então resolveu, já testou ?

     

    Att.

     

    Ari C. Raimundo

    • Marcado como Resposta oliverjer10 quarta-feira, 18 de fevereiro de 2009 16:57
    quarta-feira, 17 de setembro de 2008 01:56
  • Oi ari,

     

    é isso mesmo que preciso, vou fazer os testes aqui.

    Muito obrigado pela atenção Ari.

     

    abs.

    • Marcado como Resposta oliverjer10 quarta-feira, 18 de fevereiro de 2009 16:57
    • Não Marcado como Resposta oliverjer10 quarta-feira, 18 de fevereiro de 2009 16:57
    quarta-feira, 17 de setembro de 2008 15:47