05. august 2004 - 19:53Der er
17 kommentarer og 2 løsninger
køre et tabel igennem og liste dem i en listbox
Jeg har en tabel med klientid og tabelid, og for hvert tabelid med f.eks. nr. 12 skal der listes alle klientid'erne på en linje i en listbox med komma imellem, men hvordan løber jeg en tabel igennem og for hvert klientid skal det vises i en listbox på en linje med komma(,) imellem hvert klientid?
public int hentKlientTabel(int tabelid) { string queryString = "SELECT [KlientTabel].[klientid] FROM [KlientTabel] WHERE ([KlientTabel].[tabelid] =" + tabelid + ")";
Min hentklienttabel virker godt nok og jeg forstår godt det du har lavet, men sådan kan jeg ikke lave det, da jeg bruger metoden flere gange, hvor der ikke skal være komma med. Jeg har prøvet med en for sætning, men den returnere kun et id selv om der er flere i tabellen og jeg skal gerne have returneret alle med det tabelid
det stykke kode jeg har skrevet til dig vil returnere alle klientid's hvor tabelid er det angivne. Jeg forstod ikke helt det du skrev, men hvis det du mente var at der ikke skal være et komma helt til sidst i strengen kan du jo lave et count på hvor mange rækker den returnerer og så lave en tæller i while løkken, og så længe tælleren er mindre end det antal rækker der er, så skal den påføre et komma.
jeg tror jeg har forstået det du skrev bedre, det du vil er at returnere en array det gør du ved at sige at metode skal returnere en int array. public int[] hentKlientTabel(int tabelid)
du laver så først i din kode en query til databasen der tæller hvor mange rækker den vil returnere, og herefter laver du en int array med det antal rækker: int[] returnArray = new Int32[rowCount];
herefter laver du så det kode jeg tidligere skrev for at returnere alle rækker, og så i din while løkke, bruger du en tæller til at angive hver enkelt række i din int array: int = 0; while(dr.Read()) { returnArray[i] = dr.GetInt32(0); i++; }
return returnArray;
når du så skal bruge din funktion laver du en int array ud af funktionen: int[] klientids = hentKlientTabel(id);
og så looper du gennem arayen med en foreach: foreach(int KlientId in klientids) { Response.Write(KlientId); }
jeg tror du bør sætte dig ned og sætte dig lidt bedre ind i hvordan objekt orienteret programmering fungerer. især bør du nok sætte dig ind i hvad data typer er og gør.
Ja, det er nok rigtigt nok, men min sql metode, som jeg viste i spørgsmålet, virker fint nok, og kan jeg ikke bare kører en foreach eller en for sætning på den for at løbe tabellen igennem men hvordan?
Ja, og så har prøvet at lave et dataset som det du har lavet, men så kommer den med følgende fejl:
CS0246: The type or namespace name 'DataRow' could not be found (are you missing a using directive or an assembly reference?)
System.Data.DataSet hentKlientTabel() { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=D:\\Fam\\db1.mdb"; System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
string queryString = "SELECT [klientTabel].[klientid] FROM [klientTabel]"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection;
System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter(); dataAdapter.SelectCommand = dbCommand; System.Data.DataSet dataSet = new System.Data.DataSet(); dataAdapter.Fill(dataSet);
foreach(DataRow dr in dataSet.Tables[0].Rows) { Response.Write(dr[0].ToString()); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.