Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как передать ссылку на DataSet? / 20 сообщений из 20, страница 1 из 1
13.10.2004, 04:45
    #32735202
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Господа подскажите в чем моя ошибка:
Есть несколько форм например Form1, Form2, они вызывают форму frmClients.

Public Class Form1
Private dsClients As DataSet
...
Dim myfrm As frmClients
myfrm = New frmClients(dsClients)
myfrm.ShowDialog()
...
End Class

Public Class frmClients
Public Sub New(ByRef ds As DataSet)
MyBase.New()
InitializeComponent()
End Sub
Private Sub frmClients_Load(...)
...
Grid1.DataSource = ds
...
End Class
так вот ds равен Nothing, в чем ошибка?
вообще задача такая, при открытии главной формы открыть все данные, т.к. они нужны и в главной форме и дочерних, да и после долгого открытия главной, все остальное должно летать. Или постановка задачи неверна?
...
Рейтинг: 0 / 0
13.10.2004, 06:17
    #32735217
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
так вот ds равен Nothing, в чем ошибка?

Код: plaintext
1.
2.
3.
4.
5.
6.
Public Class Form1
Private dsClients As DataSet = new DataSet("myDataSetName") //changed by Sa
...
Dim myfrm As frmClients
myfrm = New frmClients(dsClients)
myfrm.ShowDialog()
...
Рейтинг: 0 / 0
13.10.2004, 06:40
    #32735233
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Sa
так вот ds равен Nothing, в чем ошибка?

Код: plaintext
1.
2.
3.
4.
5.
6.
Public Class Form1
Private dsClients As DataSet = new DataSet("myDataSetName") //changed by Sa
...
Dim myfrm As frmClients
myfrm = New frmClients(dsClients)
myfrm.ShowDialog()

Доброе утро Sa! Спасибо за ответ, но что-то все равно не работает, в
Public Class frmClients, говорит что ds - is not declared.
Чего-то я не понимаю...
...
Рейтинг: 0 / 0
13.10.2004, 06:54
    #32735241
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Продолжаем модифицировать код :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Class frmClients
Public Sub New(ByRef ds As DataSet)
  Me.ds = ds //added by Sa
  MyBase.New()
  InitializeComponent()
End Sub

private ds as DataSet //added by Sa

Private Sub frmClients_Load(...)
...
Grid1.DataSource = ds


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
13.10.2004, 07:17
    #32735250
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Спасибо!!! Теперь эта часть работает:-)
А можно, пользуясь случаем еще один вопрос?
Вот такой:
есть DataSet и DataAdapter
Dim dsSchet As New DataSet
Dim daSchet As New OdbcDataAdapter
...устанавливается connection и т.д. и заполняется датасет
daSchet.Fill(dsSchet, "Schet")
...меняю в нем значения одного поля, предположим вот так:
dsSchet.Tables("Schet").Rows(0).Item("custID") = RetCustID
...и делаю update:
daSchet.Update(dsSchet, "Schet")
смотрю в базу нифига не изменилось, что не так делаю?
...
Рейтинг: 0 / 0
13.10.2004, 07:38
    #32735261
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Что покажет этот код?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim myDs as Dataset = dsSchet
Dim changes as DataSet = myDs.GetChanges(DataRowState.Modified)
If changes Is Nothing Then
    MsgBox("nothing")
Else
    MsgBox(changes.Tables("Schet").Rows.Count)
End If

daSchet.Update(dsSchet, "Schet")
...
Рейтинг: 0 / 0
13.10.2004, 08:17
    #32735295
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Показывает 1.
...
Рейтинг: 0 / 0
13.10.2004, 08:25
    #32735305
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Теперь надо смотреть код, чем больше тем лучше :-) Интересует все что связано с UpdateCommand вашего daSchet?
Структура таблицы schet, лучше DDL-скрипт?
Какая СУБД используется?
...
Рейтинг: 0 / 0
13.10.2004, 09:18
    #32735350
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
СУБД-SQL Server, делаю на своей машине пока, под MSDE.
UpdateCommand взял от генератора:
Dim odbcUpC As New OdbcCommand
odbcUpC.CommandText = "UPDATE Schet SET Name = ?, datd = ?, nodoc = ?, custID = ?, Summa = ?, vhodnal = " & _ ... и т.д. вся таблица
odbcUpC.Parameters.Add(New System.Data.Odbc.OdbcParameter("Name", System.Data.Odbc.OdbcType.VarChar, 80, "Name"))
odbcUpC.Parameters.Add(New System.Data.Odbc.OdbcParameter("custID", System.Data.Odbc.OdbcType.Int, 4, "cOrg"))
... и т.д. все поля
daSchet.UpdateCommand = odbcUpC
что такое DDL-script, я к сожалению не знаю(
...
Рейтинг: 0 / 0
13.10.2004, 09:38
    #32735382
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
SqlDeleteCommand1 - вот так называются команды для SQL
Как минимум - поменяй провайдера на SQL...
...
Рейтинг: 0 / 0
13.10.2004, 09:44
    #32735391
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
что такое DDL-script, я к сожалению не знаю(

Это скрипт на создание этой таблицы в MSDE.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
13.10.2004, 10:30
    #32735525
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
vladgrigSqlDeleteCommand1 - вот так называются команды для SQL
Как минимум - поменяй провайдера на SQL...
провайдера поменял, не помогло...
...
Рейтинг: 0 / 0
13.10.2004, 10:33
    #32735531
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Sa
что такое DDL-script, я к сожалению не знаю(

Это скрипт на создание этой таблицы в MSDE.

Код: plaintext
 uid  =  S a

понятно...не понятно как его создать, может потому что у меня сверху стоит SQL Server 2000 (client), не могу найти где это, даже стыдно говорить...
...
Рейтинг: 0 / 0
13.10.2004, 10:43
    #32735561
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
понятно...не понятно как его создать, может потому что у меня сверху стоит SQL Server 2000 (client), не могу найти где это, даже стыдно говорить...


Напишите сами :-) вы же должны знать структуру таблицы с которой работаете, например:

Код: plaintext
1.
2.
3.
4.
5.
6.
create table myTable
(
   id integer identity not null,
   column2 integer null,
   column3 varchar( 30 ) not null
)
...
Рейтинг: 0 / 0
13.10.2004, 10:56
    #32735594
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
нашел таки :-)
...
Рейтинг: 0 / 0
13.10.2004, 11:48
    #32735778
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
автор
провайдера поменял, не помогло...

И как теперь выглядит команда на Update?
...
Рейтинг: 0 / 0
13.10.2004, 12:02
    #32735835
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
вот так:
UpdCom.CommandText = "UPDATE Schet SET Name = @Name, datd = @datd, nodoc = @nodoc, custID = @custId" ... и т.д.
UpdCom.Parameters.Add(New System.Data.SqlClient.SqlParameter("@custID", System.Data.SqlDbType.Int, 4, "custID")) ... и т.д.
UpdCom.Connection = ConnSchet
daSchet.UpdateCommand = UpdCom
...
Рейтинг: 0 / 0
17.10.2004, 13:40
    #32741721
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
UpdCom.CommandText = "UPDATE Schet SET Name = @Name, datd = @datd, nodoc = @nodoc, custID = @custId" ... и т.д.
...

UpdateCommand интересен без "и т.д."

А пока попробуйте выполнить этот update напрямую, используя, например, query analyzer и подставив значения параметров @custId, @datd и т.д.
...
Рейтинг: 0 / 0
18.10.2004, 11:21
    #32742226
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
Sa, спасибо за ответ.
до конца еще не понял в чем была проблема, но посмотрел Profiler-ом, и увидел что Update-ом не уходит нужный параметр, поэтому стал подставлять значение непосредственно в команду апдейта:
Me.UpdCom.Parameters("@nodoc").Value() = txtNodoc.Text
теперь работает.
...
Рейтинг: 0 / 0
18.10.2004, 11:39
    #32742262
alex3399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на DataSet?
есть еще вопрос в продолжение темы про передачу ссылок.
Есть User Control, в нем объявлена переменная, и происходит вызов формы, которая в качестве параметра принимает эту переменную :
Public Class KatSelect
Public Shared myID As Integer
...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm As Form
frm = New frmKatSelect(Me.ds, Me.myTblName, Me.myID, Me.myTableStyle)
frm.ShowDialog()
...
End Class
в форме myID присваевается другое значение:
Public Class frmKatSelect
Friend Shared myID As Integer
...
Public Sub New(ByRef ds As DataSet, ByRef myTblName As String, ByRef myID As Integer, ByRef myTs As DataGridTableStyle)
MyBase.New()
Me.myID = myID
...
Private Sub btnEnter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnter.Click
Dim crm As CurrencyManager = Me.BindingContext(ds, myTblName)
Dim row As DataRowView = CType(crm.Current, System.Data.DataRowView)
Me.myID = row("id")
...
debugger показывает что значение изменилось, как только выхожу из формы, значение myID, меняется на первоначальное, почему?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как передать ссылку на DataSet? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]