Jag har en liten fin sub ifrån VB6 som sortera ut ej upptagna Arrno. Jag kom på en lösning, kanske inte så snygg men.Porta om ifrån vb6 till C#
Den ser ut så här:
<code>
Sub EjUpptagnaArrNo()
Dim fldArrNo As ADODB.Field
Dim Index As Long
Dim Number As Long
Dim LastNumber As Long
Con.CursorLocation = adUseClient
SQL = "SELECT arrno FROM t_songtitlar where arrno < 900 ORDER BY CAST(arrno as Int)"
Set Rst = Con.Execute(SQL)
If Not Rst.EOF Then
Set fldArrNo = Rst("ArrNo")
LastNumber = CLng(fldArrNo.Value) - 1
Do Until Rst.EOF
' List1.AddItem fldArrNo.Value
Number = CLng(fldArrNo.Value) - 1
For Index = LastNumber To Number
List4.AddItem Index
Next
LastNumber = Number + 2
Rst.MoveNext
Loop
End If
Rst.Close
Set Rst = Nothing
End Sub
</code>
Nu så försöker jag att göra om den i C#
<code>
string fldArrNo;
double Index;
double Number;
double LastNumber;
string SQLstring = "SELECT arrno As OrgArrNo FROM t_songtitlar where arrno < 900 ORDER BY CAST(arrno as Int)";
da = new SqlDataAdapter(SQLstring,con);
ds = new DataSet("frånLedigaArrNo");
try
{
con.Open();
da.Fill(ds,"frånLedigaArrNo");
con.Close();
int rader = ds.Tables["frånLedigaArrNo"].Rows.Count;
nr = new string[rader];
for(int a=0;a < rader;a++)
{
fldArrNo=(ds.Tables["frånLedigaArrNo"].Rows[a]["OrgArrNo"].ToString());
LastNumber = Convert.ToInt32(fldArrNo) -1;
Number = Convert.ToInt32(fldArrNo) -1;
for(Index = LastNumber; Index < Number;Index++)
{
comboBox13.Items.Add(Index.ToString());
LastNumber = LastNumber + 2;
}
}
}
</code>
Problemet är(tror jag) att jag inte får något värde i Index.
Några förslag? Sv: Porta om ifrån vb6 till C#
Den är inte helt klar, men så här ser den primära lösningen ut:
<code>
string SQLstring = "SELECT arrno As OrgArrNo FROM t_songtitlar where arrno < 900 ORDER BY CAST(arrno as Int)";
da = new SqlDataAdapter(SQLstring,con);
ds = new DataSet("frånLedigaArrNo");
try
{
con.Open();
da.Fill(ds,"frånLedigaArrNo");
con.Close();
int sluta = 100;
int i ;
int rader = ds.Tables["frånLedigaArrNo"].Rows.Count;
nr = new string[rader];
int a;
int borga;
for( borga = 0;borga < sluta;borga ++)
{
i = borga + 1;
comboBox13.Items.Add(i.ToString("000"));
}
for( a=0;a < rader;a++)
{
comboBox13.Items.Remove(ds.Tables["frånLedigaArrNo"].Rows[a]["OrgArrNo"].ToString());
}
</code>