Hej! Hur ser det två olika SQL frågorna ut? Jag har ett val av sökfunktion med en optionbutton som man kan ställa i två lägen. Om du gör val är det bra ur användaberhetssyfte att enable/disable Kontrollerna som är knytna på valet. Dels för att visuelt visa vilket kriterier som gäller och för att användarens skall förstå vilke kontroller de behöver fylla i: Här är min specifika kod som jag kom fram till för mitt exempel: HITTADE FELET!!!Val av fråga i SQL
Jag använder två olika typer av sökfunktioner i mitt formulär. En är en textruta med en sökknapp, och en är en kombination av två listrutor. Framför dessa har jag två "Option button" som aldrig kan vara sanna båda två samtidigt utan det går bara att välja en utav dessa.
Resultatet visas i en stor listruta...
Beroende på vilket val av optionbutton så är det två olika SQL satser som skall utföras, men hur skall jag göra för att lyckas med detta scenario. Misstänker att jag får skriva det i VBA men isåfall i vilken händelse och hur skriver jag detta för att koppla till min databas osv.
Mvh.Sv: Val av fråga i SQL
Varför måste man göra ett val? Beror det på att Det är olika tabeller/källor till datan?Sv: Val av fråga i SQL
I läge ett är det en textruta och en sök knapp som ger ett resultat till en listruta:
PARAMETERS Text_Search Text ( 255 );
SELECT *
FROM Kit
WHERE [Name] LIKE Text_Search;
I läge två är det två listrutor som är sammankopplade och resultatet visas i en tredje listruta:
PARAMETERS List_Parameter Long;
SELECT [Kit].[ID], [Kit].[Name], [Kit].[MachineId], [Kit].[ParameterId], [Kit].[SEK], [Kit].[SalesDiscount], [Kit].[SalesAnnualTest], [Kit].[SalesNoOfReruns], [Kit].[SalesControlsPerYear]
FROM Kit
WHERE ((([Kit].[ParameterId])=List_Parameter))
ORDER BY [Kit].[Name];
Resultatet visas idag i två separata listrutor, men det jag vill är att de skall visas i samma listruta... Detta borde gå men man kanske måste skriva frågan i VBA i listrutan istället för att den skall kunna känna av vilket typ av sökfunktion som man valt???Sv:Val av fråga i SQL
Const SearchForName As Long = 1
Const SearchForParameter As Long = 2
Private Sub Form_Load()
Frame2_AfterUpdate
End Sub
Private Sub Frame2_AfterUpdate()
Text_Search.Enabled = (Frame2.Value = SearchForName)
List_Parameter.Enabled = (Frame2.Value = SearchForParameter)
End Sub
Sedan bör du ha en sök knapp. Genom att sätta egenskapen "Default" till true så att knappen aktiveras om användaren pressar enter när fyllt i t.ex. namn.
Koden för sök knappen kan vara:
Private Sub SearchButton_Click()
Dim strWhere As String
Dim strParameters As String
On Error GoTo SearchButton_Click_Err
Select Case Frame2.Value
Case SearchForName
strParameters = "PARAMETERS Text_Search Text ( 255 );" & vbCrLf
strWhere = "WHERE [Name] LIKE Text_Search;" & vbCrLf
Case SearchForParameter
strParameters = "PARAMETERS List_Parameter Long;" & vbCrLf
strWhere = "WHERE ((([Kit].[ParameterId]) = List_Parameter))" & vbCrLf
Case Else
End Select
List0.RowSource = strParameters & _
"SELECT [Kit].[ID], [Kit].[Name], [Kit].[MachineId], [Kit].[ParameterId], [Kit].[SEK], [Kit].[SalesDiscount], [Kit].[SalesAnnualTest], [Kit].[SalesNoOfReruns], [Kit].[SalesControlsPerYear]" & vbCrLf & _
"FROM Kit" & vbCrLf & _
strWhere & _
"ORDER BY [Kit].[Name];"
SearchButton_Click_Exit:
Exit Sub
SearchButton_Click_Err:
MsgBox Err.Description, vbCritical
Resume SearchButton_Click_Exit
End Sub
Vilket underlättar om du vill lägga till fler alternativ. Du slipper administerar frågor. Alla poster visas när inget filter är gjort.
Eller det enklare alternativet:
Private Sub SearchButton_Click()
On Error GoTo SearchButton_Click_Err
Select Case Frame2.Value
Case SearchForName
List0.RowSource = "YourNameOfQuery1"
Case SearchForParameter
List0.RowSource = "YourNameOfQuery2"
Case Else
List0.RowSource = ""
End Select
SearchButton_Click_Exit:
Exit Sub
SearchButton_Click_Err:
MsgBox Err.Description, vbCritical
Resume SearchButton_Click_Exit
End Sub
Vilket gör att frågorna kan administreras från databas fönstret. Man slipper gå in i koden för att redigera dem.
Man får oxå friheten att väla andra dator källor. Men detta kan ställa till problem för användarens förståelse. Användaren bör presenteras data från samma källa i listan med samma kolumner. DEtta underlättar. Andra sökningar kan ske under andra fönster eller flikar.
Sv: Val av fråga i SQL
optSearchList är true om användaren har valt "List Sales Search Kit" frågan...
<code>
Private Sub Search_Button_Click()
On Error GoTo Search_button_err
If Me.optSearchList = True Then
Me.List_Kit.RowSource = "List Sales Search Kit"
Else: Me.List_Kit.RowSource = "Sales search text query"
End If
Me.List_Kit.Requery
Search_Button_Exit:
Exit Sub
Search_button_err:
MsgBox Err.Description, vbCritical
Resume Search_Button_Exit
End Sub
</code>
Men listrutan List_Kit visar just nu ingenting!Sv:Val av fråga i SQL
Ibland vill man bara idiotförklara sig själv ;)
Hade råkat ta bort att Row Source Type skulle vara Table/Query!!!