Jump to content
williamjda

Programa compilado dando erro de banco de dados

Recommended Posts

williamjda

Amigo boa tarde,

Criei um programa que grava em um bd SQL criado dentro do VB. Quando eu executo o programa para testar se esta tudo ok, ele grava os dados normalmente registra mostra na minha DataGridView eu consigo pesquisar normalmente. Porem quando eu fecho a aplicação e depois abro novamente tudo que gravei não aparece mais tenho que gravar de novo. Isso é normal?

Depois que terminei minha aplicação e compilei o programa e instalei ele normalmente quando eu executo o programa e clico no botão novo registro ele da um erro com a opção para continuar eu continuo preencho o formulário e na hora de gravar o mesmo erro ele novamente da opção para continuar ele grava o formulário então fecho o programa e abro ele novamente e as informações gravadas não estão mais no bd.:

Preciso colocar algum comando para que ele fique gravado os registros no bd além do que eu já fiz. eu usei a BindingNavigator para salvar pois ela já tem os botões salvar avançar e volta e excluir.

Este é o código da BindingNavigator

 Private Sub IndustrializaçãoVBEBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Validate()
        Me.IndustrializaçãoVBEBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.BD_VBSDataSet)
    End Sub 

Este é o código do meu botão salvar

  Private Sub BTGRAVAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTGRAVAR.Click
        Me.Validate()
        Me.IndustrializaçãoVBEBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.BD_VBSDataSet)
        Desabilita_Campos()
        Habilita_Botões()
        BTCANCELAR.Enabled = False
        BTGRAVAR.Enabled = False
    End Sub

Erro abaixo:

"See the end of this message for details on invoking

just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************

System.Data.SqlClient.SqlException (0x80131904): An attempt to attach an auto-named database for file C:\Program Files\Industrialização Vodika Blue Spirit\BD_VBS\BD_VBS.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

  at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

  at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()

  at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

  at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)

  at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject)

  at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)

  at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)

  at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)

  at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)

  at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)

  at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)

  at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)

  at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)

  at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)

  at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)

  at System.Data.SqlClient.SqlConnection.Open()

  at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)

  at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)

  at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)

  at Formulário_Industrialização_Vodika_Blue_Spirit.BD_VBSDataSetTableAdapters.IndustrializaçãoVBETableAdapter.Fill(IndustrializaçãoVBEDataTable dataTable)

  at Formulário_Industrialização_Vodika_Blue_Spirit.IndustrializaçãoVBS.IndustrializaçãoVBS_Load(Object sender, EventArgs e)

  at System.Windows.Forms.Form.OnLoad(EventArgs e)

  at System.Windows.Forms.Form.OnCreateControl()

  at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)

  at System.Windows.Forms.Control.CreateControl()

  at System.Windows.Forms.Control.WmShowWindow(Message& m)

  at System.Windows.Forms.Control.WndProc(Message& m)

  at System.Windows.Forms.ScrollableControl.WndProc(Message& m)

  at System.Windows.Forms.Form.WmShowWindow(Message& m)

  at System.Windows.Forms.Form.WndProc(Message& m)

  at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

  at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************

mscorlib

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)

    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

----------------------------------------

Formulário Industrialização Vodika Blue Spirit

    Assembly Version: 1.0.0.0

    Win32 Version: 1.0.0.0

    CodeBase: file:///C:/Program%20Files/Industrializa%E7%E3o%20Vodika%20Blue%20Spirit/Formul%E1rio%20Industrializa%E7%E3o%20Vodika%20Blue%20Spirit.exe

----------------------------------------

Microsoft.VisualBasic

    Assembly Version: 10.0.0.0

    Win32 Version: 10.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll

----------------------------------------

System

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

----------------------------------------

System.Core

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

----------------------------------------

System.Windows.Forms

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

----------------------------------------

System.Drawing

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

----------------------------------------

System.Configuration

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

----------------------------------------

System.Xml

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

----------------------------------------

System.Runtime.Remoting

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll

----------------------------------------

System.Data

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll

----------------------------------------

System.Data.DataSetExtensions

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.DataSetExtensions/v4.0_4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll

----------------------------------------

System.Numerics

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll

----------------------------------------

Accessibility

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 built by: RTMRel

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll

----------------------------------------

System.Transactions

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll

----------------------------------------

System.EnterpriseServices

    Assembly Version: 4.0.0.0

    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)

    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll

----------------------------------------

************** JIT Debugging **************

To enable just-in-time (JIT) debugging, the .config file for this

application or computer (machine.config) must have the

jitDebugging value set in the system.windows.forms section.

The application must also be compiled with debugging

enabled.

For example:

<configuration>

    <system.windows.forms jitDebugging="true" />

</configuration>

When JIT debugging is enabled, any unhandled exception

will be sent to the JIT debugger registered on the computer

rather than be handled by this dialog box.

Share this post


Link to post
Share on other sites
Caça

Estás a executar noutra máquina, certo?

Esse caminho está correcto?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
williamjda

Instalei em outra maquina e ele deu erro. Instalei na mesma maquina no qual ele foi desenvolvido e tambem deu o mesmo erro.

Share this post


Link to post
Share on other sites
Caça

A outra máquina tem o SQL Server instalado?

A connectionstring está bem definida?

Mostra a conectionstring.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
williamjda

Na outra maquina, não prestei atenção por que o tempo que tive para instalar foi muito rapido. Só instalei abri o programa 3 vez e tive que ir embora.

Public Class IndustrializaçãoVBS

    Private Sub IndustrializaçãoVBEBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Validate()
        Me.IndustrializaçãoVBEBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.BD_VBSDataSet)

    End Sub

    Private Sub IndustrializaçãoVBS_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'BD_VBSDataSet.IndustrializaçãoVBE' table. You can move, or remove it, as needed.
        Me.IndustrializaçãoVBETableAdapter.Fill(Me.BD_VBSDataSet.IndustrializaçãoVBE)
        Desabilita_Campos()
    End Sub

    Private Sub NFRetornoToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NFRetornoToolStripButton.Click
        Try
            Me.IndustrializaçãoVBETableAdapter.NFRetorno(Me.BD_VBSDataSet.IndustrializaçãoVBE, OrdemProduçãoToolStripTextBox.Text)
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try

    End Sub

O que eu tenho é isso. Bom como sou iniciante no VB acho que esta faltando algo.

Share this post


Link to post
Share on other sites
Caça

Mostra a conectionstring.

Não me interessa ver o código, mostra apenas a connectiostring. Na outra máquina será ser necessário uma instalação do SQL Server


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
bioshock

Ele não têm connectionString porque está a utilizar o wizard que o VS fornece.

Logo, todo o código é auto-gerado.

Share this post


Link to post
Share on other sites
Caça

Não deixa de ter uma connectionstring por causa disso, apenas em vez de ser definida no código, está guardada no App.config


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
bioshock

Normal e claro.

Ao falar-lhe em connectionString, ele, das duas uma: ou sabe o que é ou não faz puto da ideia e ainda por cima utiliza wizards.

Também é claro que ele fez um attach da base de dados e que a instância do servidor SQL Server, em princípio, não será a mesma. Mas mesmo que fosse, teria de instalar lá a base de dados.

Será mais fácil dizer-lhe que existem outras alternativas mais simplistas e grátis que fazem o homework, como por exemplo o SQLite.

Share this post


Link to post
Share on other sites
Caça

Ok, mas cada um utiliza aquilo que quiser, não o vamos obrigar a usar SQLite


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
bioshock

Nem é essa a minha intenção. Aliás, ele até pode deter uma licença do SQL Server...

Só quis esclarecer aquele ponto.

Share this post


Link to post
Share on other sites
williamjda

Aqui esta o APP CONFIG.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="Formulário_Industrialização.My.MySettings.BD_VBSConnectionString"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BD_VBS\BD_VBS.mdf;Integrated Security=True;User Instance=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <system.diagnostics>
        <sources>
            <!-- This section defines the logging configuration for My.Application.Log -->
            <source name="DefaultSource" switchName="DefaultSwitch">
                <listeners>
                    <add name="FileLog"/>
                    <!-- Uncomment the below section to write to the Application Event Log -->
                    <!--<add name="EventLog"/>-->
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="DefaultSwitch" value="Information" />
        </switches>
        <sharedListeners>
            <add name="FileLog"
                 type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
                 initializeData="FileLogWriter"/>
            <!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
            <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
        </sharedListeners>
    </system.diagnostics>
</configuration>

Share this post


Link to post
Share on other sites
Caça

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BD_VBS\BD_VBS.mdf;Integrated Security=True;User Instance=True"

Isto é aquilo que poderá ter de ser alterado, mas primeiro tens de instalar o SQL Server no cliente


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
williamjda

Estou a fazer um teste ja instalei o SQL Server. O que mais preciso fazer?

Share this post


Link to post
Share on other sites
Caça

Que nome deste à instância do SQL Server?

A base de dados continua a estar em

local onde esta o exe\BD_VBS\BD_VBS.mdf

?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
williamjda

Tenho ela dentro de uma pasta onde o programa foi criado.

N:\INDUSTRIALIZAÇÃO VBS\FormIndVBS\Formulário IndustrializaçãoVBlS\BD_VBS

Share this post


Link to post
Share on other sites
Caça

Que nome deste à instância do SQL Server?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Então troca a tua connectionstring por esta

connectionString="Data Source=Nome_da_Maquina;AttachDbFilename=|DataDirectory|\BD_VBS\BD_VBS.mdf;Integrated Security=True;User Instance=True"

onde Nome_da_Maquina é o nome da máquina onde a app vai correr


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
williamjda

Bom copiei as informações como mencionado gravei algumas informações. Fechei o programa e abri novamente e as informações estavam registradas isso não acontecia antes. Porem agora pela 4 vez abri e fechei o programa novamente e as informações sumiram.

Se eu compilar agora o programa ele fucionará ou preciso fazer algo antes?

Share this post


Link to post
Share on other sites
Caça

Não precisavas de ter compilado, o app.config é configurado a maneira de cada maquina.

Testa na máquina do cliente


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
williamjda

Uma pergunta.

Eu tenho que colocar o nome da maquina do cliente no connectionString e instalar o SQL Server na maquina do mesmo.

Share this post


Link to post
Share on other sites
Caça

Sim, isto é, depende do cada caso, como a instância é chamada "MSSQLSERVER", basta colocar o nome da maquina, caso contrário, tens de colocar o nome da máquina seguido de "/" e o nome da instância


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
williamjda

Bom deixa ver se eu entendi.

Ja tenho o programa no visual basic. Ele cria um Release dentro da pasta BIN. Eu posso compila-lo com um programa (Inno Setup) para criar um instalador ou posso apenas copiar e colar o Release da pasta bin. Uma vez que o SQL server estiver instalado no computador?

Eu não preciso colocar o nome da maquina na connectionString em que caso. Por que se eu colocar o nome e for instalar em outra maquina diferente ira dar erro.

Qual procedimento correto?

Share this post


Link to post
Share on other sites
Caça

De qualquer maneira que faças, a config vai ter de ser sempre alterada no final da instalação


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.