Tip elke dag uit database?

Status
Niet open voor verdere reacties.
Dan lijkt het er op alsof misschien je Macro beveiliging te hoog staat. VBA doet het vermoed ik alleen als je de Beveiliging op Laag zet.
 
???

hoezo? en waar kan ik dit dan aanpassen want ik zelf gebruik access niet voor macro's enkel om database te maken :)
 
In 2007 weet ik het snel niet; ik vermoed ergens in de Opties onder de Menuknop. Probeer de Help eens, zou ik zeggen!
 
sorry octafish,

maar niets te vinden over de macro

niet in help en niet in de opties.
 

Bijlagen

  • 2010-08-12_075810.png
    2010-08-12_075810.png
    51,1 KB · Weergaven: 35
Hier zou je het moeten kunnen vinden:

office button->access options->trust center

click on the "trust center settings..." button (on the right side)

now, on the left side...choose macro settings...

now choose

Enable all macros
 
bedankt
heb het gevonden

ok ik heb weer op de willekeurig knop gedrukt
en krijg nu in de textbox verschillende weergaves weer.

Kunnen we nu verder gaan?
 
Lijkt mij wel.... Kijk eerst eens naar de code achter de knop. En kijk ook naar de Module met de Randomizer functie. Als je er vragen over hebt, dan zie ik ze wel...
 
ik heb even wat getest

Code:
strSql = "SELECT TOP 1 TipDay FROM TipofDay " & vbCrLf
     '   strSql = strSql & "WHERE (((Randomizer()) = 0)) " & vbCrLf
        strSql = strSql & "ORDER BY Rnd(IsNull([TipofDay].[Id])*0+1)"

        If EditPass.State = 1 Then EditPass.Close()
        With EditPass
            .Open(strSql, CN, 1, 2)
           
            If .RecordCount = 1 Then Me.Label1.Text = .Fields(0).Value  & " - " & .Fields(1).Value
        End With

als ik randomize weg laat krijg ik melding zie afb.

en als ik de .fields(0).value neem krijg ik 7 te zien
en als ik de randomize terug aan zet krijg ik weer de zelfde fout als de 1x
 

Bijlagen

  • 2010-08-12_092505.png
    2010-08-12_092505.png
    17,9 KB · Weergaven: 22
Even een misschien wel stomme vraag tussendoor: in de code zet je dit: Me.Label1.Text. Mijn vraag is uiteraard: is Me.Label1 wel een Tekstvak? Want de naam suggereert een Label, en volgens mij kun je aan een label geen Textwaarde toekennen. Een label heeft alleen de eigenschap Caption. Je zou, als het inderdaad een label is, dit eens kunnen proberen: Me.Label1.Caption
 
.caption wordt niet ondersteund door label.

ik heb een textbox gemaakt maar krijg de zelfde fout.


ik zal toch iets verkeerd doen denk ik.
 

Bijlagen

  • 2010-08-12_101225.png
    2010-08-12_101225.png
    17,3 KB · Weergaven: 18
Kijk eens of je deze query kunt maken/plakken:
Code:
SELECT TOP 1 Blad1.Id, Blad1.nr, Blad1.Instelling, Blad1.Toepassing, Blad1.Bedrag, StrConv([Instelling],3) & " - " & StrConv([Toepassing],3) & " - " & Format([Bedrag],"Currency") AS Tekstreeks
FROM Blad1
WHERE (((Randomizer())=0))
ORDER BY Rnd(IsNull(Blad1.Id)*0+1);
Als je een nieuwe query maakt, en geen tabel gebruikt, kun je via <Beeld>, <SQL> de code wel plakken. Al heet het in 2007 uiteraard anders ;)
 
Octafish,

is er geen simple oplossing om het toch te laten werken
want krijg het niet voor mekaar :(

alvast bedankt voor al je hulp

Dummy1912
 
@octafish,

ik heb het op een andere manier gedaan
en het werkt prima

ik heb gewoon de datum (1 tot 31) in een database gezet
met daarachter een tip

en van het moment het programma start laat hij de tip zien van vandaag.

maar ik had graag geweten wat deze tips moeten inhouden
ik weet dat deze info bevatten over mijn programma om de gebruikers ervan op de hoogte te houden wat ze allemaal kunnen
en vinden.

Enig idee hoe dit er zou kunnen uitzien.

En alvast bedankt voor al de hulp die je mij hebt verleend :D

Dummy1912
 
Ik snap je laatste opmerkingen eigenlijk niet.... Je zegt eerst dat je de tips nu uit een tabel haalt, waar je 31 tips in hebt gezet, en vervolgens vraag je dat je de tips graag zou zien, en hoe dat er uit moet gaan zien? En de oplossing die je nu hebt, is natuurlijk ook dermate simpel, dat de oplossing die je nu gebruikt eigenlijk al in de eerste tip is gegeven.... En je hebt nu geen random tip, maar altijd op dezelfde dag dezelfde tip.... Dat was toch ook niet de bedoeling?
Kun je een eigen db posten in 2003 format, die ik dan eens kan bekijken? Je mag hem ook mailen, als je dat liever doet.
 
@octafish,

Ja eigenlijk heb je gelijk
telkens als de prog wordt gestart krijg je de zelfde tip te zien.

nee niet echt de bedoeling
maar krijg het gewoon niet voor mekaar.

in mijn data base staat niets speciaal is
enkel een colom met Day
colom met Tip

meer niet.

nogmaals bedankt

Dummy1912
 
Als je een voorbeeldje kan posten, kan ik de code er werkend voor je inzetten, toegespitst op jouw situatie. Dat zou dan toch zeker werkend te krijgen moeten zijn. Vandaar mijn vraag om een voorbeeldje.
 
Blijkbaar geeft de functie Randomizer een probleem in 2007. Omdat ik die versie niet gebruik, kan ik dat niet uitproberen. Daarom een andere methode, die zou moeten kunnen werken: via een Recordset. Dat ziet er dan zo uit:
Op het formulier met de Tips zet je op de gebeurtenis <Bij aanwijzen> de volgende code:

Code:
Private Sub Form_Current()
    strSql = "SELECT ID, TipDay FROM TipofDay " 
    x = rndRecord(AdoRecordCount(strSql))
    With rsADO
        .Open strSql, CurrentProject.Connection, adOpenKeyset
        .MoveFirst
        For i = 1 To x
            .MoveNext
        Next
        Me.Label1 = .Fields(0).Value & " - " & .Fields(1).Value
        .Close
    End With
End Sub

De procedure gebruikt twee functies. De eerste functie telt het aantal records in de Tipstabel telt,
Code:
Function AdoRecordCount(SQL As String) As Integer
Dim rs As New ADODB.Recordset
    
    With rs
        .Open SQL, CurrentProject.Connection, adOpenKeyset
        AdoRecordCount = .RecordCount
    End With
    rs.Close
    Set rs = Nothing
End Function
de tweede genereert een willekeurig recordnummer om te laten zien.
Code:
Function rndRecord(numRec As Long) As Long
    rndRecord = Int((numRec * Rnd) + 1)
End Function
Je kunt, als je een volgende tip wilt kunnen kunnen zien, ook nog een knop maken die de procedure aanroept:

Code:
Private Sub cmdRandom_Click()
    
    strSql = "SELECT ID, TipDay FROM TipofDay " 
    x = rndRecord(AdoRecordCount(strSql))
    With rsADO
        .Open strSql, CurrentProject.Connection, adOpenKeyset
        .MoveFirst
        For i = 1 To x
            .MoveNext
        Next
        Me.Label1 = .Fields(0).Value & " - " & .Fields(1).Value
        .Close
    End With
    
End Sub
Ik zou zeggen: probeer het eens uit...
 
Laatst bewerkt:
Je moet alle codeblokken kopiëren en plakken op de VBA pagina van het formulier. Hij maakt dan vanzelf de gebeurtenis <Bij aanwijzen> aan, want die code-aanroep is altijd hetzelfde. En een knop moet dan cmdRandom heten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan