I forbindelse med et Infopath projekt, havde kunden brug for at kunne udvælge specifikke produkter i et datointerval fra en database. Så vidt jeg kunne læse mig frem til, er det ikke noget Infopath understøtter "out-of-the-box", derfor blev løsningen at kode en knap som havde den funktionalitet.
Min søgefunktion var tilknyttet en gentaget tabel og så sådan ud:
En simple opstilling, hvor der er mulighed for at kombinere 3 produkter med et datointerval.
Søg-funktionen:
//Hent værdien af felterne som du vil have med i søgningen
XPathNavigator queryField1 = MainDataSource.CreateNavigator().SelectSingleNode("/dfs:myFields/my:produkt1", NamespaceManager);
string querySeed1 = queryField1.Value;
XPathNavigator queryField2 = MainDataSource.CreateNavigator().SelectSingleNode("/dfs:myFields/my:produkt2", NamespaceManager);
string querySeed2 = queryField2.Value;
XPathNavigator queryField3 = MainDataSource.CreateNavigator().SelectSingleNode("/dfs:myFields/my:produkt3", NamespaceManager);
string querySeed3 = queryField3.Value;
XPathNavigator queryField4 = MainDataSource.CreateNavigator().SelectSingleNode("/dfs:myFields/my:date1", NamespaceManager);
string querySeed4 = queryField4.Value;
XPathNavigator queryField5 = MainDataSource.CreateNavigator().SelectSingleNode("/dfs:myFields/my:date2", NamespaceManager);
string querySeed5 = queryField5.Value;
//Sæt værdien for datoen hvis den er tom.
if (querySeed4.Equals(""))
{
querySeed4 = "01-01-2000";
}
if (querySeed5.Equals(""))
{
querySeed5 = "01-01-2050";
}
//Ryd værdien af felterne så de ikke kommer med i søgningen
queryField1.SetValue("");
queryField2.SetValue("");
queryField3.SetValue("");
queryField4.SetValue("");
queryField5.SetValue("");
//Søgestrengen med de felter fra infopath formularen
string customQuery = " where [impl] BETWEEN #" + querySeed4 + "# AND #" + querySeed5 + "# AND ([solution] = '" + querySeed1 + "' OR [solution] = '" + querySeed2 + "' OR [solution] = '" + querySeed3 + "')";
//Databaseforbindelsen
AdoQueryConnection newQuery = (AdoQueryConnection)MainDataSource.QueryConnection;
string origCommand = newQuery.Command.ToString();
//Forspørgelsen med vores søgestreng
newQuery.Command = origCommand + customQuery;
//Eksekver kommandoen
newQuery.Execute();
//Reset strengen
newQuery.Command = origCommand;
//set felterne til det som brugeren har tastet ind!
queryField1.SetValue(querySeed1);
queryField2.SetValue(querySeed2);
queryField3.SetValue(querySeed3);
//Hvis der ikke er tastet dato sættes den til tom ellers værdien af feltet
if (querySeed4.Equals("01-01-2000"))
{
queryField4.SetValue("");
}
else
{
queryField4.SetValue(querySeed4);
}
if (querySeed5.Equals("01-01-2050"))
{
queryField5.SetValue("");
}
else
{
queryField5.SetValue(querySeed5);
}
Det er lavet med en Access database som ligger i et Sharepoint dok. Men det kunne ligeså vel ligge i en SQL database.
Blogging about daily challenges in SharePoint, PowerShell and Infopath
Viser opslag med etiketten database. Vis alle opslag
Viser opslag med etiketten database. Vis alle opslag
tirsdag den 2. februar 2010
Sharepoint - Attach content database, som ikke er samme version(Windows server 32bit/64bit).
Når man skal genskabe en content DB fra en anden Sharepoint server, som har en ældre/nyere version eller er 32/64 bit version, så melder den en fejl om at det er en forkert version man prøver at attach'e.
Løsningen er at, der findes en tabel i sharepoint content databasen, som har et versionsnummer. Tabellen hedder: dbo.Versions.
Hvis man ændre versionen til den ælste version, vil man kunne tilføje DB'en og bruge dens content.
OBS! Begge felter skal ændres!
Abonner på:
Opslag (Atom)
