Har ett problem. Gjorde en söksida med en massa if-satser baserat på vilka textrutor som är ifyllda och vilket värde 2 dropdownlister har. Det blev en hiskeligt massa kod :( Det är en massa kod :( Det är inte så enkelt att du har glömt 1 End if någonstans, låter så eftersom det inte spelade någon roll vilken if-sats du tog bort. Hej, Begränsning?
När jag ska köra får jag ett fel: Ett ogiltigt program har upptäckts av CLR
Den hänvisar till funktionen.
Tar jag bort en av if-satserna så fungerar allt (spelar ingen roll vilken if-sats), men när alla är på plats så kommer felmeddelandet. Är det en begränsning i programmet?Sv: Begränsning?
Men det verkar ju inte vara fel på den, eftersom när jag tar bort en if-sats så fungerar den. Jag har testat att ta bort olika if-satser, och tar jag bort en (spelar ingen roll vilken) så fungerar den. Alla if-satserna innehåller nästan samma kod.
Så här kan början se ut i varje if-sats:
<code>
If (DropDownList1.SelectedItem.Value = "Välj" AND DropDownList2.SelectedItem.Value = "Välj") Then
If TextBox1.Text <> "" Then
If TextBox2.Text <> "" Then
If TextBox3.Text <> "" Then
If TextBox4.Text <> "" Then
If TextBox5.Text <> "" Then
If TextBox6.Text <> "" Then
If TextBox7.Text <> "" Then
If TextBox8.Text <> "" Then
Dim connectionString As String = "server='(local)'; trusted_connection=true; Database='rusta'"
Dim sqlConnection As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection(connectionString)
Dim queryString As String = "SELECT [Arende].* FROM [Arende] WHERE ([Agent] LIKE '%" & Request.Form("TextBox1") & "%' And [Start] LIKE '%" & Request.Form("TextBox2") & "%' And [Slut] LIKE '%" & Request.Form("TextBox3") & "%' And [Namn] LIKE '%" & Request.Form("TextBox4") & "%' And [Telefon] LIKE '%" & Request.Form("TextBox5") & "%' And [Mobil] LIKE '%" & Request.Form("TextBox6") & "%' And [Ort] LIKE '%" & Request.Form("TextBox7") & "%' And [Kvitto] LIKE '%" & Request.Form("TextBox8") & "%') ORDER BY [Namn]"
Dim sqlCommand As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand(queryString, sqlConnection)
Dim dataAdapter As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter(sqlCommand)
Dim dataSet As System.Data.DataSet = New System.Data.DataSet
dataAdapter.Fill(dataSet)
Return dataSet
Else
Dim connectionString As String = "server='(local)'; trusted_connection=true; Database='rusta'"
Dim sqlConnection As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection(connectionString)
Dim queryString As String = "SELECT [Arende].* FROM [Arende] WHERE ([Agent] LIKE '%" & Request.Form("TextBox1") & "%' And [Start] LIKE '%" & Request.Form("TextBox2") & "%' And [Slut] LIKE '%" & Request.Form("TextBox3") & "%' And [Namn] LIKE '%" & Request.Form("TextBox4") & "%' And [Telefon] LIKE '%" & Request.Form("TextBox5") & "%' And [Mobil] LIKE '%" & Request.Form("TextBox6") & "%' And [Ort] LIKE '%" & Request.Form("TextBox7") & "%') ORDER BY [Namn]"
Dim sqlCommand As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand(queryString, sqlConnection)
Dim dataAdapter As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter(sqlCommand)
Dim dataSet As System.Data.DataSet = New System.Data.DataSet
dataAdapter.Fill(dataSet)
Return dataSet
End If
</code>Sv: Begränsning?
- MagnusSv: Begränsning?
Om jag fattar allt rätt så vill du kolla om alla textboxar har värden för att göra din sökning?
Sedan bygger du upp en select baserat på detta?
Vad du kan göra är en metod som tar emot en string, sedan bygger du på din fråga om denna string inte är null eller empty. När du är klar använder du det svar du får ut av denna metod.
Pseudo-kod:
BuildMyQuery(string text,StringBuilder builder)
{
om query inte är tom eller null plocka dess värde.
builder.Append( bygg strängen)
}
sedan.
StringBuilder builder = new StringBuilder();
BuildMyQuery(textbox1,builder);
BuildMyQuery(textbox2,builder);
BuildMyQuery(textbox3,builder);
BuildMyQuery(textbox4,builder);
osv....
sedan skapar du Selectfrågan baserat på builder.ToString()
Hade inte riktigt tid att sätta mig in i din kod. Men hoppas jag förstod dig rätt. Annars kan du gärna skriva ett litet use case vad det är du vill få fram..
Mvh Johan