Código de consulta na base SQL no VB

SQL

Visual Studio

Visual Basic

22/02/2019

select





Olá amigos, estou precisando de um modelo de código que consulte se existe algo gravado na coluna de uma determinada tabela do meu BC, Alguém tem algum exemplo ? linguagem Vb.net !
Wictor

Wictor

Curtidas 0

Respostas

Renato Dias

Renato Dias

22/02/2019

No código abaixo, passo uma query que consulta quantos registros existem em que os campos nome e aplicação não estão nulos, para um datareader.

Dim consulta As SqlCommand = New SqlCommand("SELECT COUNT(*)
FROM PRODUTOS
WHERE NOME IS NOT NULL
AND APLICACAO IS NOT NULL", conexao)

Dim leitor2 As SqlDataReader = consulta.ExecuteReader()

Do While leitor2.Read
Console.WriteLine("Registros encontrados: " + leitor2.Item(0).ToString())
Loop
leitor2.Close()
GOSTEI 0
Wictor

Wictor

22/02/2019

No código abaixo, passo uma query que consulta quantos registros existem em que os campos nome e aplicação não estão nulos, para um datareader.

Dim consulta As SqlCommand = New SqlCommand("SELECT COUNT(*)
FROM PRODUTOS
WHERE NOME IS NOT NULL
AND APLICACAO IS NOT NULL", conexao)

Dim leitor2 As SqlDataReader = consulta.ExecuteReader()

Do While leitor2.Read
Console.WriteLine("Registros encontrados: " + leitor2.Item(0).ToString())
Loop
leitor2.Close()


Amigo não rodou não .. Vou explicar detalhadamente oque estou fazendo: Estou importando dados de um Banco Firebird para meu banco SQL. Ja tenho todo o codigo de acesso ao banco, segue :

Imports System.Data.SqlClient
Imports FirebirdSql.Data.FirebirdClient


Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim connstr As String

        connstr = "User = SYSDBA;
                Password=masterkey;
                Database=C:\\SGBR\\Master\\BASESGMASTER.FDB;
                DataSource=localhost;
                Port = 3050;
                Dialect=3;
                Charset=NONE;
                Role=;Connection lifetime=15;
                Pooling=True;
                MinPoolSize = 0;
                MaxPoolSize=50;
                Packet Size=8192;
                ServerType=0;"

        Dim conF As FbConnection = New FbConnection(connstr)

        conF.Open()

        Dim command As FbCommand = New FbCommand("select CONTROLE, PRODUTO, CODBARRAS, UNIDADE, PRECOCUSTO, PERCLUCRO, PRECOVENDA, FORNECEDOR, QTDEMINIMA, QTDE, REFERENCIA from TESTOQUE", conF)

        Dim reader As FbDataReader = command.ExecuteReader()

        While reader.Read()
            ListBox1.Items.Add(String.Format("CONTROLE:  -  PRODUTO -  - PREÇO CUSTO: R$", reader.GetString(0), reader.GetString(1), reader.GetString(4)))
            reader.NextResult()
        End While


    End Sub

End Class



O próximo passo é verificar em meu banco se existe ou não alguma coisa gravado no campo da tabela "Produtos", se já existir alguma coisa eu farei um "update", se não existir nada eu farei um "insert" . Já tenho em meu projeto o arquivo de conexão com meu banco Sql=

Imports System.Data.SqlClient

Module Conexao
    Public con As New SqlConnection("Server=DESKTOP-HSNO430; DataBase=bancoLW; Integrated Security=SSPI")

    Sub abrir()
        If con.State = 0 Then
            con.Open()
        End If
    End Sub

    Sub fechar()
        If con.State = 1 Then
            con.Close()
        End If
    End Sub


    Public usuarioNome As String

End Module




agora a dúvida é como fazer essa checagem e as decisões. Pode parecer uma duvida simples mas estou iniciando na programação, desde ja agradeço as ajudas !
GOSTEI 0
Renato Dias

Renato Dias

22/02/2019

Entendi Wictor. Já trabalhei com Firebird alguns anos atrás. Nos últimos anos só tenho trabalhado com .NET e no caso do banco de dados SQL Server. Trabalhei em uma empresa em que eu fazia muitas migrações de dados, por causa de clientes que vinham de sistemas de outras empresas com bancos de dados diferentes do sql server. Acho que estou em codições de ajuda-lo. Para facilitar o processo será que poderia me mandar a estrutura das tabelas no firebird e no sql server. isso é importante para avaliar que tipo de verificações ou conversões de dados serão necessários para realizar a migração.
GOSTEI 0
Wictor

Wictor

22/02/2019

Entendi Wictor. Já trabalhei com Firebird alguns anos atrás. Nos últimos anos só tenho trabalhado com .NET e no caso do banco de dados SQL Server. Trabalhei em uma empresa em que eu fazia muitas migrações de dados, por causa de clientes que vinham de sistemas de outras empresas com bancos de dados diferentes do sql server. Acho que estou em codições de ajuda-lo. Para facilitar o processo será que poderia me mandar a estrutura das tabelas no firebird e no sql server. isso é importante para avaliar que tipo de verificações ou conversões de dados serão necessários para realizar a migração.


Renato do SQL eu tenho pois fui eu que fiz, segue:


use bancoLW

create table produtos(
Id_produto int PRIMARY KEY NOT NULL identity,
Id_fiscal varchar(10),
Nome varchar(60),
Barras varchar(48),
Aplicacao varchar(80),
Localizacao varchar (6),
NOriginal varchar(15) not null,
NFabrica varchar (15),
Grupo varchar (30),
SubGrupo varchar(30),
Unidade varchar (3),
Quantidade varchar(7),
Minimo varchar(7),
Custo varchar (7),
Venda varchar(7),
Margem varchar(7),
Suplente1 varchar (25),
Suplente2 varchar (25),
Suplente3 varchar (25),
Suplente4 varchar (25),
Suplente5 varchar (25),
Suplente6 varchar (25),
Fornecedor varchar (60),
Adicional varchar(200)
)
GO

--! Procedimentos produtos

use bancoLW

create procedure sp_salvarproduto
@Id_fiscal varchar(10),
@Nome varchar(60),
@Barras varchar(48),
@Aplicacao VARCHAR(80),
@Localizacao VARCHAR(6),
@NOriginal VARCHAR(15),
@NFabrica VARCHAR(15),
@Grupo VARCHAR(30),
@SubGrupo VARCHAR(30),
@Unidade VARCHAR(3),
@Quantidade VARCHAR(7),
@Minimo varchar(7),
@Custo varchar(7),
@Venda varchar(7),
@Margem varchar(7),
@Suplente1 varchar(25),
@Suplente2 varchar(25),
@Suplente3 varchar(25),
@Suplente4 varchar(25),
@Suplente5 varchar(25),
@Suplente6 varchar(25),
@Fornecedor varchar (60),
@Adicional varchar(200),
@mensagem varchar (100) output
as 
begin
IF (EXISTS(SELECT * FROM produtos WHERE NOriginal=@NOriginal ))
SET @mensagem =''Número Original:''+@NOriginal+''já está registrado''
else 
begin 
insert into produtos values (@Id_fiscal, @Nome, @Barras, @Aplicacao, @Localizacao, @NOriginal, 
@NFabrica, @Grupo, @SubGrupo, @Unidade,@Quantidade, @Minimo,@Custo, @Venda,@Margem,@Suplente1,
@Suplente2,@Suplente3,@Suplente4,@Suplente5,@Suplente6,@Fornecedor, @Adicional )
set @mensagem =''Produto registrado com sucesso !''
end 
end 
go



 create procedure sp_editarproduto
@Id_fiscal varchar(10),
@Nome varchar(60),
@Barras varchar(48),
@Aplicacao VARCHAR(80),
@Localizacao VARCHAR(6),
@NOriginal VARCHAR(15),
@NFabrica VARCHAR(15),
@Grupo VARCHAR(30),
@SubGrupo VARCHAR(30),
@Unidade VARCHAR(3),
@Quantidade VARCHAR(7),
@Minimo VARCHAR(7),
@Custo VARCHAR(7),
@Venda VARCHAR(7),
@Margem VARCHAR(7),
@Suplente1 varchar(25),
@Suplente2 varchar(25),
@Suplente3 varchar(25),
@Suplente4 varchar(25),
@Suplente5 varchar(25),
@Suplente6 varchar(25),
@Fornecedor varchar (60),
@Adicional varchar(200),
@mensagem varchar (100) output
as 
begin
update produtos set 

id_fiscal = @Id_fiscal,
Nome = @Nome,
Barras = @Barras,
Aplicacao = @Aplicacao,
Localizacao = @Localizacao,
NOriginal = @NOriginal,
NFabrica = @NFabrica,
Grupo = @Grupo,
Subgrupo = @SubGrupo,
Unidade = @Unidade,
Quantidade = @Quantidade,
Minimo = @Minimo,
Custo = @Custo,
Venda = @Venda,
Margem = @Margem,
Suplente1 = @Suplente1,
Suplente2 = @Suplente2,
Suplente3 = @Suplente3,
Suplente4 = @Suplente4,
Suplente5 = @Suplente5,
Suplente6 = @Suplente6,
Fornecedor = @Fornecedor,
Adicional = @Adicional where NOriginal = @NOriginal
set @mensagem =''Dados alterados!''
end  
go




create proc sp_buscarProdutosNome
@nome VARCHAR(60)
as
begin 
select * from produtos where nome like ''%''+ @nome + ''%''
end
go




create proc sp_buscarProdutosAplicacao
@Aplicacao VARCHAR(80)
as
begin 
select * from produtos where Aplicacao like ''%'' + @Aplicacao + ''%''
end
go



create proc sp_buscarProdutosBarras
@barras VARCHAR(48)
as
begin 
select * from produtos where Barras like ''%''+ @barras + ''%''
end
go

create proc sp_buscarAplic
@barras VARCHAR(48),
@Nome varchar(60),
@NOriginal VARCHAR(15),
@NFabrica VARCHAR(15),
@Aplicacao VARCHAR(80)
as
begin 
select * from produtos where Barras like @barras + ''%'',
Nome like''%''+ @nome + ''%'',
NOriginal like''%''+ @NOriginal + ''%'',
NFabrica like''%''+ @NFabrica + ''%'',
Aplicacao like''%''+ @Aplicacao + ''%''
end
go

create proc sp_buscarProdutosNOriginal
@NOriginal VARCHAR(15)
as
begin 
select * from produtos where NOriginal like ''%''+ @NOriginal + ''%''
end
go


create proc sp_buscarProdutosNFabrica
@NFabrica VARCHAR(15)
as
begin 
select * from produtos where NFabrica like ''%''+ @NFabrica + ''%''
end
go



create proc sp_excluirProdutos
@NOriginal VARCHAR(14),
@mensagem VARCHAR(100) OUTPUT
as 
BEGIN
DELETE produtos WHERE NOriginal = @NOriginal
SET @mensagem =''Dados excluidos ! ''
end 
go



Já as do BC Firebird eu não tenho pois o bc não é meu .. porem tenho a senha e os campos que desejo copiar (ta no codigo que mandei do Vb)
GOSTEI 0
Renato Dias

Renato Dias

22/02/2019

Bom dia Wictor, desculpe a demora. Mas montei um pequeno aplicativo console em c# que faz a migração que você quer. O que você provavelmente terá que alterar é a relação entre os campos das duas bases de dados. Como você tem acesso a base e/ou a pessoa responsável pela base firebird pode fazer os ajustes na hora de receber os valores de uma base para outra. segue o link do repositório no github:
https://github.com/renatodiasmvp/consoleConverteBaseFirebird
GOSTEI 0
POSTAR