Opmaak rapport

  • Onderwerp starter Onderwerp starter Risk
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Risk

Gebruiker
Lid geworden
5 jul 2010
Berichten
275
Forum,

Inmiddels ben ik zover dat ik met de code als onderstaand vanuit een formulier naar een rapport de waardes overbreng. Was enig gepuzzel, maar het werkt. Waar ik nu tegen aan loop is dat de getallen niet zijn op te maken in het rapport. In het formulier keurig in valuta en getal. Ik wil graag een opmaak die netjes een punt tussen de duizendtallen en de decimalen aangeeft.
Ik probeer via eigenschappen e.e.a. te wijzigen, maar de opmaak verandert niet.

Graag uw raad in deze.

Code:
Private Sub Knop384_Click()

Dim stDocName As String, sVelden As String
Dim i As Integer
    
    stDocName = "Rapport33"
  
    For i = 0 To 15
        If i > 0 Then sVelden = sVelden & "|"
        sVelden = sVelden & Me("txtInput" & i)
    Next i
    DoCmd.OpenReport stDocName, acPreview, OpenArgs:=sVelden



End Sub

Dank als altijd.

Risk
 
Aan die code zien we niet zo veel, en bovendien ligt daar het probleem natuurlijk niet, dat ligt in je rapport. Daar moet je (maar dat zal je toch wel gedaan hebben?) de tekstvelden opmaken overeenkomstig de velden die je meestuurt.
 
Michel,

Alle data in zowel het formulier als op het rapport staan op standaard met 2 decimalen.


Het "overseinen"naar het rapport loopt prima, maar opmaak wordt zonder scheidingstekens.

Wat simpel lijkt is het dus weer niet.

Ergens een coderegeltje tussen planten?

Ik leer wederom graag.

Risk
 
Zonder voorbeeld db blijft het een beetje met losse flodders schieten, en dan kan het lang duren voordat je iets raakt. Maar dat is een keuze die jij maakt, niet ik ;). Hoe is de notatie van de velden ingesteld?
 
Michel,

Ik heb een kleine database gemaakt. Nu werkt het helemaal niet wat ik voor heb. Inmijn huidige wel. Ik gebruik dezelfde codes. Raar. Zal wel iets fout doen.

De opmaak in formulier en rapport is gelijk. Het is niet op een tabel cq. query gebaseerd, immers het is een kladblok. In de eche database wordt met de uitkomsten in het rapport gerekend. Dat werkt prima, alleen de scheidingstekens is het probleem.

Wat er nu dus fout gaat is mij echt een raadsel.

Weer iets ter leering en den vermaeck, waarbij deze novice (geen non overigens) met de spreekwoordelijke..... met tandenstaat.

Hope to hear.

Risk


Bekijk bijlage Test.rar
 
Een voorbeeldje zonder data schiet natuurlijk niet erg op. We zijn geen datatypistes bij HelpMij :)
 
Ik vraag ook niet om data in te voeren.

Ik leg nogmaals e.e.a. uit.


Het formulier is een "kladblok" waarop je zelf data ingeeft die niet gerelateerd zijn aan een tabel! De gegevens van het formulier moeten naar een rapport. Daar reken ik verder met die data.

Het is een "knip" uit een groter formulier. Het gaat mij erom dat de data op het formulier wel netjes een scheidingsteken hebben, maar de uitkomsten in het rapport niet.

Risk
 
Daarnaast: als je een rapport opent vanuit een niet-gebonden formulier, en je geeft een OpenArgs parameter mee, dan moet je die natuurlijk wel weer uitlezen op het rapport. En dat doe je niet. Als ik die code zelf toevoeg, dan krijg ik keurig de waarden terug. Dat de opmaak niet meekomt is niet meer dan logisch; de OpenArgs parameter is een string, geen getal. Je leest dus een tekst uit, en die heeft nu eenmaal geen getal opmaak. Wat je ook in het testvak zet. Die getalopmaak moet je dus bij het inlezen meegeven. Bijvoorbeeld zo:
Code:
Private Sub Report_Load()
Dim tmp
Dim i As Integer
    If Me.OpenArgs <> "" Then
        tmp = Split(Me.OpenArgs, "|")
        For i = LBound(tmp) To UBound(tmp)
            Me("txtInput" & i) = Format(tmp(i), "#,##0.00")
        Next i
    End If
End Sub
 
Michel,

TOP, het werkt. Roep dat nu heel hard, morgen zal de realiteit anders zijn. Ik kan je volgen mbt tot tekst! Daar zat mijn fout!

Hoe kan ik het formulier (popup) laten sluiten als ik naar het rapport ga? Ben niet meer zo heel helder na dit weekeind zwoegen op e.e.a..

Risk
 
In de code waarmee je het rapport opent, heb je nog een lege regel over ;) Vul die met:
Code:
     DoCmd.Close acForm, Me.Form.Name
 
Michel,

Ook dit werkt. (Uiteraard).

Was weer een zeer zinvolle leergang.:thumb:

Risk
 
Opmaak rapport deel 2

Forum,

In een vorige vraag heb ik de code als onderstaand gekregen en in mijn rapport werkt het goed tot txtInput22 (23 ingevulde velden). Echter, nu ik een aantal extra velden wil meenemen naar het rapport, bijv. txtInput24 en ik conform het getal in de code ophoog naar 23, helaas neemt de code deze niet meer mee. Is e.e.a. begrenst?

Code:
Private Sub Print_berekening_Click()
Dim stDocName As String, sVelden As String
Dim i As Integer
    
    stDocName = "Rapport33"
  
    For i = 0 To 23
        If i > 0 Then sVelden = sVelden & "|"
        sVelden = sVelden & Me("txtInput" & i)
    Next i
    DoCmd.OpenReport stDocName, acPreview, OpenArgs:=sVelden
 DoCmd.Close acForm, Me.Form.Name
End Sub

Ik heb dus te vroeg de vlag uitgestoken?

Risk
 
Ik heb wel meer velden gebruikt op deze manier. Dat mag geen probleem zijn. Hooguit heb je de namen van de tekstvelden verkeerd staan. Of, zou ook nog kunnen, zit je aan de maximum lengte van de string.
 
Michel,

Alle namen gecheckt, dus zal de begrenzing in de String zitten. Hoe pas ik die aan. Weer wat nieuws, val altijd van het een in het ander, al is het wel leerzaam.

Risk
 
waarom in hemelsnaam zo veel velden naar een rapport sturen? Die velden zullen toch ergens in de db staan? Stuur de PK en draai rapportje, presto ...
 
namliam,

Ik heb een invulformulier dat rekent met verzameldedata uit de database. Wat ik met het foprmulier beoog is een "kladblok functie". Je kunt rekenen (o.a. rendement) met data die je zelf ingeeft en niet worden opgeslagen. Ze dienen wel geprint te worden. Dat lukt met de code als gegeven, maar ik zit aan d elimiet, dus de oplossing is de string te vergroten (weet niet hoe) of .??

Risk
 
Waarom dan doorgeven? Waarom niet ophalen vanuit het formulier? Kan je min of meer op dezelfde manier doen maar dan niet via openargs,moet je het formulier uitlezen.

Je kan ook de in het formulier gebruikte data opslaan in een (tijdelijke) tabel met een auto nummer en dan die tabel uitlezen in je rapport, terwijl je alleen het autonummer hoeft door te geven.
 
De makkelijkste manier lijkt mij een Public variabele; die vul je op dezelfde manier als je nu de OpenArgs string vult. Of, als je de lengte beter in de hand wilt houden, maak je er een array van. Die lees je dan op het rapport weer uit.
 
Michel,

Ik geloof dat je de oplossing geeft, maar helaas ik kom er niet verder mee. Snap het niet is een eerlijk en oprecht antwoord. Hoe doe ik dat binnen de code die ik van je eerder heb gehad?

Leer graag. Bladerend in mijn InsideOut boek kwam ik er niet achter.

Risk
 
Je maakt het iedereen makkelijker wanneer je gewoon in de oorspronkelijke vraag blijft. Twee topic samengevoegd.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan