2014-02-03 3 views
0

У меня есть следующий код, который отлично работает, но DataTable не обновляется ... что я теряю/делаю неправильно?!?Почему мой DataTable не обновляется?

Option Compare Text 
Option Explicit On 

Imports System 
Imports System.IO 
Imports System.Data 
Imports System.Data.SqlClient 
Imports System.Windows 
Imports System.Windows.Forms 
Imports Microsoft.Office 
Imports Microsoft.Office.Interop 

Public Class Form1 
Public txtTo As String = "" 
Public txtFrom As String = "" 
Public txtSubject As String = "" 
Public txtBody As String = "" 
Public txtAttachmentID As String = "" 
Public txtAttachment As String = "" 
Public MsgBoxResult As DialogResult 
Public myPath As String = "" 
Public dbLeague As String = "" 
Public dbSession As String = "3" 
Public Sqlstring As String = "" 
Public myText As String 
Public newLocationRow As KickaboutEmailDataSet.FileLocationsRow 

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 

    Me.LeaguesTableAdapter1.Fill(Me.KickaboutEmailDataSet1.Leagues) 

    ComboBox1.SelectedIndex = -1 
    ComboBox2.SelectedIndex = 0 

End Sub 

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click 

    Dim folderBrowserDialog As New FolderBrowserDialog() 

    myPath = Environment.SpecialFolder.MyComputer 

    Me.FileLocationsTableAdapter1.Fill(Me.KickaboutEmailDataSet1.FileLocations) 

    If File.Exists(myPath & "\Despatch Schedule.txt") Then 
     myText = "" 
    Else 
     myText = "to be " 
    End If 

    For Each Dr As DataRow In KickaboutEmailDataSet1.FileLocations.Rows 
     myPath = Dr.Item(1).ToString 
    Next 

    folderBrowserDialog.Description = "Select Folder Where Despatch Schedule File is " & myText & "Stored" 
    folderBrowserDialog.RootFolder = myPath 
    folderBrowserDialog.ShowNewFolderButton = True 

    If folderBrowserDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then 
     myPath = folderBrowserDialog.SelectedPath 
    Else 
     Exit Sub 
    End If 

Я написал эти следующие четыре строки с помощью MSDN в моей директиве, и, как я уже говорил, они исполняют только штрафом, но база данных не обновляется < <

newLocationRow = KickaboutEmailDataSet1.FileLocations.NewFileLocationsRow() 
    newLocationRow.ID = 0 
    newLocationRow.DESPATCHSCHEDULE = myPath 
    KickaboutEmailDataSet1.FileLocations.Rows.Add(newLocationRow) 

End Sub 

End Class 
+1

Сначала вы говорите, что DataTable не обновляется, а затем вы говорите, что база данных не обновляется. Это две разные вещи, которые вы имеете в виду? Если вы ожидаете, что добавление строки в DataTable автоматически добавит запись в базу данных, вы должны изменить свои ожидания. DataTable - это только локальный кеш. Чтобы сохранить изменения в базе данных, вы должны вызвать Update на своем адаптере таблицы. – jmcilhinney

+0

Я понимаю, что база данных содержит DataTables, и я понимаю, что до тех пор, пока данные на самом деле не будут записаны/зафиксированы в DataTable, чем база данных не будет обновлена, но я бы подумал, что когда MSDN сообщает мне, как добавить новую строку в A DataTable, что они предоставят вам всю необходимую информацию, но я, очевидно, что-то пропустил, следовательно, мой вопрос. –

+0

Нет, база данных не содержит DataTables. Он содержит таблицы. MSDN продемонстрировала вам, как добавить строку в DataTable, и это именно то, что вы сделали. Если вы затем захотите вставить соответствующую строку в соответствующую таблицу в базе данных, вам необходимо сохранить изменения из DataTable, который является объектом .NET, а не частью базы данных, обратно в базу данных. Как вам уже сказали, вы это сделаете, вызвав Update в своем адаптере data/table. – jmcilhinney

ответ

0

просто создать экземпляр DataAdapter (SqlDataAdapter, если вы используете SQL Server) и вызвать Update ... может быть, вы уже годный к употреблению DataAdapter как вы, кажется, используете типизированный набор данных ...

+0

Я теперь запутался в отношении того, есть ли у меня типизированный или непечатаемый набор данных :-(!!! Я предположил вчера, изучая это на странице MSDN, что у меня действительно есть типизированный набор данных, но, читая эту страницу, это утром ... http://sourcecodematrix.wordpress.com/2013/02/26/dataset-datatable-and-dataadapter-objects/ ... что кажется довольно простым, у меня есть набор данных XSD в моем обозревателе решений, поэтому у меня есть набор данных нетипизированные Мое решение Проводник:?!? KAemail MyProject app.config ClassDiagram1.cd Form1.vb KickaboutEmail.vb KickaboutEmailDataset.xsd Settings.vb –

+0

типизированный набор данных генерируется из вашего xsd-файла ... вы можете видеть сгенерированные классы, если вы расширяете узел KickaboutEmailDataset.xsd в проводнике решений. – PrfctByDsgn

+0

. Я начинаю с нуля с помощью VS2013 Express & SqL-Server 2013 Express, чтобы узнать, могу ли я лучше поймите. Спасибо за вашу помощь, я, скорее всего, буду использовать основу кода в новом проекте, поэтому надеюсь, что он пригодится, поскольку я понимаю больше !!! Я действительно думаю, что мне нужно будет найти прохождение других протоколов MSDN, хотя они могут быть хорошими, если вы знаете, что делаете, но для Ученика они ужасные !!! –

Смежные вопросы