Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Program copiere date Samsung J5 l...

Contestatie amenda anulata in ins...

Folosire filezilla
 Alegere panouri fotovoltaice

Intrare gratuita la Antipa daca a...

De la Casuța de pe deal la C...

trilogia 3 corpuri
 Cum se mufeaza un cablu CAT7

Solutie smart pentru termostat ce...

Echivalent portalul instantelor

Martor ulei VW Passat 2007
 Provider IPTV indian !

Uzucapiune teren in posesie

Mai merita facuta zacusca, in 202...

Intrebare legata de autorizatia d...
 

Lucru cu baze de date locale

- - - - -
  • Please log in to reply
27 replies to this topic

#19
Alphasebi

Alphasebi

    Junior Member

  • Grup: Members
  • Posts: 40
  • Înscris: 15.12.2009

View Postneagu_laurentiu, on 01 mai 2013 - 12:26, said:

Decat sa-L astepti pe Hristos nu mai bine te uiti in documentatie sa vezi de ce nu gaseste metoda, ce tip e obiectul respectiv s.a.m.d asa cum iti spune eroarea ? Dumnezeu e in noi, nu in alta parte !

Nu am stat degeaba in timpul asta. Am mai incercat ceva intre timp doar ca acum imi spune ca acea coloana pe care o caut nu exista in tabel, desi exista. De aia am vrut sa vad daca o alta rezolvare merge. Uite codul meu:
Dim connstrSQL As System.Data.SqlServerCe.SqlCeConnection = New System.Data.SqlServerCe.SqlCeConnection("Data Source=D:\Users\Administrator\My Documents\Visual Studio 2010\Projects\Statistica\Statistica\Chestionare.sdf")
	 Dim MyCommand As SqlServerCe.SqlCeCommand
	 'Dim da As SqlDataAdapter
	 connstrSQL.Open()
	 Dim dtDataTable As DataTable
	 Dim test As Integer = 0 ' In felul asta poti sa scrii o singura linie de cod, in loc de doua'
	 Dim strDetail As String
	 MyCommand = New SqlServerCe.SqlCeCommand()
	 '("SELECT * FROM tblChestionare", connstrSQL) 'ATENTIE: aici presupunem ca ai asignat anterior variabilei connstrSQL stringul de conectare la baza de date'
	 dtDataTable = New DataTable("tblChestionare")
	 MyCommand.CommandText = " SELECT * FROM tblChestionare "
	 MyCommand.CommandType = CommandType.Text
	 MyCommand.Connection = connstrSQL
	 Dim da As New SqlServerCe.SqlCeDataAdapter()
	 da.SelectCommand = MyCommand
	 da.Fill(dtDataTable) 'Linia asta de cod e foarte importanta, leaga continutul selectat din baza de date cu "SELECT" de datatable'
	 For Each row As DataRow In dtDataTable.Rows
		 If row!Profesie.ToString = "Medic" Then 'Am utilizat tostring pentru a evita erorile cauzate de continut NULL in campul respectiv.'
			 test = test + 1 'poti sa scrii un pic mai ergonomic linia asta: test +=1 '
		 End If
		 strDetail = row!Profesie.ToString 'E posibil sa fii dezamagit de ce obtii. Vei avea valoarea campului "profesie" din ultima inregistrare din DataTable. nimic altceva...'
	 Next row
	 Label2.Text = test
	 connstrSQL.Close()


Mai exact pe linia asta: If row!Profesie.ToString = "Medic" imi da eroarea column "Profesie" does not belong to table "tblChestionare".

Edited by Alphasebi, 01 May 2013 - 13:06.


#20
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 39,725
  • Înscris: 30.07.2003
Arata si mie in documentatie cum poti accesa asa o coloana, mai ales pe un DataTable dinamic.

#21
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 39,725
  • Înscris: 30.07.2003
Idee: http://msdn.microsof...#code-snippet-2

Edited by neagu_laurentiu, 01 May 2013 - 15:20.


#22
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,353
  • Înscris: 04.10.2002

View Postneagu_laurentiu, on 01 mai 2013 - 13:39, said:

Arata si mie in documentatie cum poti accesa asa o coloana, mai ales pe un DataTable dinamic.

Daca te referi la linia
If row!Profesie.ToString = "Medic" Then
eu i-am indicat-o. Este mai scurta si la fel de eficienta ca si
If row("Profesie").ToString = "Medic" Then


Citez din documentatia MSDN: "Use the ! operator only on a class or interface as a dictionary access operator. The class or interface must have a default property that accepts a single String argument. The identifier immediately following the ! operator becomes the argument value passed to the default property as a string."

Articol disponibil aici: http://msdn.microsof...y/xxda45fy.aspx

Secventa de cod care i-am dat-o este perfect functionala, cu adaptarile de rigoare. In loc de adaptari Alphasebi a schimbat complet anumite linii de cod.
La modul cel mai sincer, ii recomand sa studieze temeinic documentatia. Si cand prinde o secventa de cod, sa fie sigur ca a inteles cum functioneaza inainte sa o modifice.


@Alphasebi: ataseaza "Chestionare.sdf" sa vedem si noi un pic structura tabelelor.

Edited by Yoda, 01 May 2013 - 17:42.


#23
Alphasebi

Alphasebi

    Junior Member

  • Grup: Members
  • Posts: 40
  • Înscris: 15.12.2009
Ce am pus mai sus e ceva ce am gasit pe internet si am adaptat-o, de aia nici nu am pus-o prima data.
Deci revenim la codul asta:
Dim connstrSQL As System.Data.SqlServerCe.SqlCeConnection = New System.Data.SqlServerCe.SqlCeConnection("Data Source=D:\Users\Administrator\My Documents\Visual Studio 2010\Projects\Statistica\Statistica\Chestionare.sdf")
			 connstrSQL.Open()
			 Dim dtDataTable As DataTable
			 Dim test As Integer = 0 ' In felul asta poti sa scrii o singura linie de cod, in loc de doua'
			 Dim strDetail As String
			 Dim da As New SqlDataAdapter("SELECT * FROM tblChestionare", connstrSQL)
			 dtDataTable = New DataTable("tblChestionare")
			 da.Fill(dtDataTable)
			 For Each row As DataRow In dtDataTable.Rows
					 If row!Profesie.ToString = "Medic" Then
							 test = test + 1 'poti sa scrii un pic mai ergonomic linia asta: test +=1 '
					 End If
					 strDetail = row!Profesie.ToString
			 Next row
			 Label2.Text = test
			 connstrSQL.Close()

unde aveam problema aia cu fill.
Am pus mai jos fisierul. Nu pot uploada direct pe forum.

http://dl.fisier.ro/...ionare.sdf.html

Edited by Alphasebi, 01 May 2013 - 18:09.


#24
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,353
  • Înscris: 04.10.2002
Alphasebi: Compilerul are (intotdeauna) dreptate, campul respectiv nu exista in tabel. Mare atentie la detalii.
Ai definit aproape toate campurile din tabelul tblChestionare cu doua puncte la sfarsitul numelui.

In general e bine ca in denumirea campurilor sa folosesti doar litere si cifre.

Edited by Yoda, 01 May 2013 - 18:43.


#25
Alphasebi

Alphasebi

    Junior Member

  • Grup: Members
  • Posts: 40
  • Înscris: 15.12.2009

View PostYoda, on 01 mai 2013 - 18:42, said:

Alphasebi: Compilerul are (intotdeauna) dreptate, campul respectiv nu exista in tabel. Mare atentie la detalii.
Ai definit aproape toate campurile din tabelul tblChestionare cu doua puncte la sfarsitul numelui.

In general e bine ca in denumirea campurilor sa folosesti doar litere si cifre.

Ai dreptate, ca de obicei lucrurile evidente sunt cel mai greu de obervat.
Oricum, am facut modificarile, dar variabila test tot nu creste chiar daca am campuri care indeplinesc conditia.

Edit: Vad ca mai am o problema acum. Dupa ce se executa acel cod, daca inchid si redeschid programul toate inregistrarile dispar si ramane tabelul gol.

Edited by Alphasebi, 01 May 2013 - 22:21.


#26
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,353
  • Înscris: 04.10.2002
@Alphasebi: nu ai scapare, pune burta pe carte daca vrei programare. Nu te supara pe mine, si mie mi sa spus la fel acum vreo 15 ani iar individul a avut dreptate.
Campul "Profesie" l-ai definit in baza de date ca nchar(50) . Lungime fixa,asta inseamna ca orice valoare text introduci va fi completata spre dreapta cu spatii goale pana ajunge la lungimea 50.

Trebuia sa folosesti campuri de tipul nvarchar, care au lungime variabila si stocheaza strict stringul introdus, fara padding.
Asta nu o poti afla decat invatand, invatand si iar invatind din documentatie. Al naibii Lenin, si in programare se aplica vorbele lui... Posted Image

#27
Alphasebi

Alphasebi

    Junior Member

  • Grup: Members
  • Posts: 40
  • Înscris: 15.12.2009

View PostYoda, on 01 mai 2013 - 23:11, said:

@Alphasebi: nu ai scapare, pune burta pe carte daca vrei programare. Nu te supara pe mine, si mie mi sa spus la fel acum vreo 15 ani iar individul a avut dreptate.
Campul "Profesie" l-ai definit in baza de date ca nchar(50) . Lungime fixa,asta inseamna ca orice valoare text introduci va fi completata spre dreapta cu spatii goale pana ajunge la lungimea 50.

Trebuia sa folosesti campuri de tipul nvarchar, care au lungime variabila si stocheaza strict stringul introdus, fara padding.
Asta nu o poti afla decat invatand, invatand si iar invatind din documentatie. Al naibii Lenin, si in programare se aplica vorbele lui... Posted Image

Nu am de ce sa ma supar, ai dreptate.
Am facut modificarile, dar tot nu functioneaza. Si in continuare imi sterge toate inregistrarile.

#28
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,353
  • Înscris: 04.10.2002
Tabelul trebuie populat la randul lui din cod. Probabil ca cel mai eficient ar fi sa imi trimiti si sursele proiectului, sau macar ale formei respective. Arhivate ca rar sau zip, ar trebui sa te lase sa le atasezi aici sau sa le trimiti ca mesaj privat,
Numai ca din pacate putem discuta pe acest subiect de marti incolo, sunt plecat pana atunci.

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate