|
 |
SPECIALE SELECT QUERY - Oud Forum inhoud (alleen lezen) |
 |
| U bevindt zich > Oude forum > Visual Basic .Net > Databases ... (VB.Net) > speciale SELECT query | | Gepost door Dudeke gepost op 07/01/2006 om 15:10 | Heykes,
Ik ben bezig met een windowsapplicatie die een MS Access DB ondervraagt.
Het uitvoeren van onderstaande query lukt:
"SELECT O.Benaming, O.Producent , O.Aankoopprijs , O.BTWtarief, O.Winsttarief, S.Naam as Leverancier FROM tblOnderdelen O, tblLeverancier S WHERE O.Leverancier_ID = S.ID ORDER BY O.Benaming"
Maar ik zou graag voor elk resultaat van aankoopprijs '€' en BTW- en Winsttarief '%' bij willen zetten.
Ik dacht dat het op deze manier moest, maar deze geeft een error:
"SELECT O.Benaming, O.Producent , O.Aankoopprijs || '€' , O.BTWtarief || '%', O.Winsttarief || '%', S.Naam as Leverancier FROM tblOnderdelen O, tblLeverancier S WHERE O.Leverancier_ID = S.ID ORDER BY O.Benaming"
Error:
Ongeldig gebruik van sluistekens in query-expressie O.Aankoopprijs || '€'
Weet iemand hier een oplossing voor??
| | Gepost door Don Delegate gepost op 07/01/2006 om 16:00 | 1) Concat operator (||) werkt alleen voor strings. Ik vermoed dat BTWTarief en WinstTarief geen string types zijn. 2) Ik weet zelfs niet of Access de standaard Concat operator kent (vermoed dat dit voor Access + moet zijn i.p.v. ||). Maar dat brengt geen zoden aan de dijk wat betreft de types. 3) Je zou de waarden in je query kunnen casten naar string types en dan de bewerkingen er op uitvoeren. Ik zou dat zelf niet doen: als het de bedoeling is - dat de data wordt weergegeven in je UI: regel de weergave in je UI (in welke control wil je de gegevens tonen) - dat je de gegevens niet wil tonen, maar bijvoorbeeld wil wegschrijven naar een bestand of zo: regel het in de routine die deze actie wil uitvoeren
| | Gepost door Dudeke gepost op 07/01/2006 om 16:28 | Heykes,
Bedankt voor de reactie Don Delegate.
Ik geef deze weer in een datagrid (dg.source = ds.table(0)) en ondertussen, na weer een uurtje zoeken, heb ik iets gevonden dat werkt:
"SELECT O.Benaming, O.Producent , O.Aankoopprijs & '€' as Aankoopprijs , O.BTWtarief & '%' as BTWtarief, O.Winsttarief & '%' as Winsttarief, S.Naam as Leverancier FROM tblOnderdelen O, tblLeverancier S WHERE O.Leverancier_ID = S.ID ORDER BY O.Benaming"
de &-operand doet het blijkbaar, maar dan krijg je een Expressie fout in de header van de desbetreffende kolom. Deze vervang ik dan door de AS-expressie.
Misschien niet 100% in orde, maar hij doet het wel.
Don Delegate, ken je mss een snelle methode om de waarde van Aankoopprijs (in Access als Valuta-veld ingegeven) altijd weer te geven met 2 decimalen (inclusief nullen na de komma)?
bvb 4,00 ; 34,50 ; 53,43 ; ...
Round, Trunc ronden/kappen wel af maar geven niet altijd 2 decimalen terug. (als je 4,3 zou hebben en je doet round(4.3,2) dan geeft deze wel degelijk 4.3 terug en geen 4.30, dit wil ik bekomen.)
Is dit mogelijk vanuit de SQL-query of niet.
| | Gepost door Don Delegate gepost op 07/01/2006 om 17:53 | Dudeke zei:
Heykes, Don Delegate, ken je mss een snelle methode om de waarde van Aankoopprijs (in Access als Valuta-veld ingegeven) altijd weer te geven met 2 decimalen (inclusief nullen na de komma)? bvb 4,00 ; 34,50 ; 53,43 ; ...
|
Ja: CultureInfo.NumberFormat.CurrencyDecimalDigits. Voor conversie naar string en/of weergave in UI: gebruik de formatString "C".
Standaard is de waarde overigens 2, dus gewoon de formatstring "C" gebruiken zou dat moeten doen. Bijvoorbeeld:
Code:
|
MessageBox.Show(5.ToString("C"))
|
| | Gepost door Dudeke gepost op 07/01/2006 om 18:30 | Dat lijkt te werken.
thx Don Delegate voor de hulp. |
|
|
|