Platnost dat v DataTable   otázka

VB.NET, ADO.NET, WinForms, Databáze

Dobrej,

mám Form kde při startu naplním DataTable daty z SQL.

Na Formu mám přidány Vlastní Komponenty, v kterých jsou spojeny TextBox(y) a Label(y).

Po spuštění Formu zadám data do TextBoxu. Při opouštění tohoto TextBoxu, chci tuto zadanou hodnotu naplnit do DataTable. Jak ale volám Funkci ve třídě Formu, tak se obsah DataTable vynuluje (smažou se všechny řádky DataTable).

Mohli byste poradit v čem je chyba? Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nemáte zde konkrétní problém, nemáte zde zdrojový kód, nemáte zde nic. Jediné co vám lze poradit je použití Data bindingu kde se není potřeba starat o synchronizaci dat mezi ovládacími prvky a datovým zdrojem. Doufám že další dotaz nebude jak udělat Data binding, nejen na MSDN je dokumentace na toto téma požehnaně.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Zde je kód

' Formulář

Public Class HlaseniMereni
Private Sub HlaseniMereniO_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    SQLCon.ConnectionString = Con_Data
    If VyberDat() = False Then Return
End Sub
' naplnění BindingSource je zde cca 5 řádků, počet se mění
' počtu řádků odpovídá počet Vlastních komponent
 Function VyberDat() As Boolean
   Try
    Me.AX_EXvyrobaTA.Fill(Me.DSvyroby.AX_EXvyroba, "S", MTBvyroba.Text.Trim)
       Return True
    Catch ex As System.Exception
       Return False
   End Try
 End Function

'Přidání Vlastních komponent na Form cca 5 kusů (mění se a vzhled je různý, struktura zhruba stejná)
Dim RRR As New RadekDec
  With RRR
   .Location = New System.Drawing.Point(x, y + (i * 27))
   .Name = "Radek" + i.ToString
   .NUD.DecimalPlaces = 3
   .NUD.Value = -1
  End With
  Me.Controls.Add(RRR)

'Uložení hodnoty do DataTable
Sub Uloz(ByVal Radek As String, ByVal Hodnota As String)
  DGmerit.Rows(0).Cells("Namereno").Value = Hodnota
REM zde vyskočí chyba, že index je mimo rozsah, počet řádků v tuto chvíli je v  DataTable = 0
End Sub
End Class

' Vlastní komponenta
Public Class RadekDec
Private Sub NUD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles NUD.LostFocus
        HlaseniMereni.Uloz(NUD.Parent.Name, NUD.Value.ToString)
    End Sub
End Class

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak s tímto vám nikdo nepomůže. Zajistit si aby v tabulce byl alespoň jeden řádek nebo ošetřit to když tam nebude žádný řádek musíte sám. Ladit snad umíte tak si nastavte Breakpointy na klíčová místa a krokujte. Pomůže také Call Stack - historie volání metod.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Pokud uvedené krokuji, tak ještě ve chvíli kdy přenáším data z vlastní komponenty do

Sub Uloz(ByVal Radek As String, ByVal Hodnota As String)
'tak v DataTable je správný počet řádků,
'ale následující řádek vypíše chybu 
 DGmerit.Rows(0).Cells("Namereno").Value = Hodnota
'pak již je v DataTable počet 0

Není problém v tom, že data se přenášejí mezi dvěmi různými

Public Class??

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback