28. juni 2006 - 18:53Der er
20 kommentarer og 2 løsninger
Problemer med kald til rapport
Jeg har lidt problemer med at kalde en rapport fra en formular.
Jeg har en tabel med navnet 'comments'.
I min formular får jeg genereret følgende streng: [comments]![active]=true AND [comments]![user_id]=1 AND [comments]![t_date]>=#01-01-2006# AND [comments]![t_date]<=#31-07-2006#
Som jeg så kalder en rapport med følgende kode: DoCmd.OpenReport "user_comments_report", acPreview, , rep_str
hvor rep_str er ovenstående streng.
Mit problem er blot, at den ikke bare viser ovenstående hvor active er sand, user_id er 1 og t_date er mellem 01-01-2006 og 31-07-2006! I stedet popper der en boks op, som siger: Indtast parameterværdi comments!user_id
Og her kan jeg så indtaste en værdi - hvad går galt?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
rep_str er erklæret som en string. dit forslag med "user_id=" & rep_str virker helt hen i vejret hvorfor skulle user_id være lig hele min streng?
Hvis jeg udelader '[comments]![user_id]=1 AND', så virker det fint - naturligvis bare uden den restriktion at den kune skal vise der hvor user_id fx er 1.
Kan det have noget at gøre med at elev_id er erklæret som en interger i tabellen?
Ja jeg er 100% sikker på at min tabel hedder "comments" og at der er en kolonne der hedder "user_id" i den. kolonnen er sat til at være "tal". "user_id" har desuden en relation til en kolonne "id" i en anden tabel "users" - dvs. users.id er relateret til comments.user_id og der er sat flueben i "Gennemtving referentiel integritet"
Kan noget af ovenstående give problemer eller må jeg ikke bruge tegn som "_"?
Synes også det er det jeg har gjort - her kan du se koden jeg har brugt til at generere den del med "user_id=1": rep_str & "[comments]![user_id]=" & [com_user] & " AND "
Jeg har jo prøvet at fjerne "[comments]![user_id]=" & [com_user] & " AND " - og så virker det - så det må vel være der problemet er.
Min samlede string med user_id-delen giver: [comments]![active]=true AND [comments]![user_id]=1 AND [comments]![t_date]>=#01-01-2006# AND [comments]![t_date]<=#31-07-2006#
Og her ser det ud til at den fint forstår at [com_user] er 1. Jeg har også forsøgt at fjerne [com_user] og sætte 1 direkte i stringen i stedet - men med samme fejl som tidligere beskrevet.
Hele koden på min knap ser sådan her ud: Private Sub but_show_report_Click() Dim rep_str As String
If IsNull([tex_date_from]) Or IsNull([tex_date_too]) Then MsgBox ("Du skal vælge dato - både fra og til.") Else: rep_str = "[comments]![active]=true AND " If [com_user] <> -1 Then rep_str = rep_str & "[comments]![user_id]=" & [com_user] & " AND " If [com_type] <> " alle fag" Then rep_str = rep_str & "[comments]![type]='" & [com_type] & "' AND " rep_str = rep_str & "[comments]![t_date]>=#" & [tex_date_from] & "# AND [comments]![t_date]<=#" & [tex_date_too] & "#"
MsgBox (rep_str) DoCmd.OpenReport "user_comments_report", acPreview, , rep_str 'DoCmd.Close acForm, "make_report" End If End Sub
Undskyld -anders-, jeg kan godt se, at mit indlæg kan virke noget groft og ubehøvlet - det var abosolut ikke ment sådan, men det er det evindelige problem med skriftsproget - man kan nemt blive misforstaet. Jeg værdsætter virkelig den hjælp jeg får, også den jeg får og har fået af dig.
Men hvis jeg følger dit råd med "user_id = " & rep_str, så bliver den samlede kode bare: DoCmd.OpenReport "user_comments_report", acPreview, ,"user_id = [comments]![active]=true AND [comments]![user_id]=1 AND [comments]![t_date]>=#01-01-2006# AND [comments]![t_date]<=#31-07-2006#"
og det kan jeg ikke se der kommer noget godt ud af.
Hej alexander, ingen grund til at undskylde, jeg redegjorde blot for min indledende kommentar :o), det fint at du har fået det til at virke. Nedenstående lister jeg et tip til hvordan det også kan laves via en såkaldt parameterforspørgsel stort set uden brug af kode eks. tager udgangspunkt i et salgssystem.
Lav en forspørgsel denne skal så fungere som postkilde til rapporten. Medtage alle relevante felter.
Eks. I forspørgseldesign kan man gøre følgende:
I feltet Salgsdato skrives der følgende: Between [Forms]![frmrapport![Startdato]And[Forms]![frmrapport]![slutdato]
I feltet Vartype skrives følgende:[Forms]![frmrapport]![Vartype]
Gem og luk forspørgsel
Opret en ny form, navngiv den frmrapport, indsæt 3 ubunde tekstbokse og navngiv dem:Startdato,Slutdato,Varetype. Indsæt en kommandoknap, navngiv den cmdrunreport, ved OnClick eventet, skriver du: DoCmd.OpenReport "NavnPåRapport",,acPreview
Gem og luk formen.
Åben formen igen, indtast start og slutdato, samt navnet på en specifik varetype, og klik på knappen, nu åbnes rapporten, med de angivne kriterier.
Hvis man i Accesshjælpen søger på ovenstående problematik er det nøjagtig det der kommer frem
Det kan sagtens udbygges med mange flere kritrier i forspørgslen, og tekstbokse på formen. Jeg har en demodb som netop anvender ovenstående metode, du velkommen til at få en kopi, blot post din mailadresse.
Tjah... Det fremgik jo ikke helt klart, om du baserede din rapport på en tabel eller en forespørgsel. Fejlmeddelelsen indikerede, at [comments]![user_id] var "ukendt" i din parameterstreng - og det viste sig jo at være korrekt. Det vigtigste er at du fandt fejlen og kan komme videre ;o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.