Eigen text verdwijnt uit de unbound textbox na afsluiten form

Status
Niet open voor verdere reacties.
Heren,

Ik dacht.. dat moet wel duidelijk zijn maar toch niet blijkbaar?
Optie A Michel, ik heb bv 5 textboxen die allen in 1 row staan in de tabel...
Ik had met de regel rst(1) al het eea geprobeerd, rst(2), rst(3) etc, maar dit maakte geen verschil volgens mij omdat de sql regel nog steeds maar naar een textbox verwees. Ook hier het eea in kopieeren/aanpassen hielp niet.
 
Terug komend op bovenstaande waarbij een gebruiker inmiddels de tekst kan updaten en saven, ik zoek nu naar de aanpassing in het schript zodat er meerdere tekst boxen tegelijk kunnen worden geupdate en gesaved.
Voor de duidelijkheid; Ik heb bv 5 tekstboxen die allen met verschillende updates bewaard moeten kunnen worden dmv een command button.
Om te beginnen: nu ik je voorbeeldje bekeken heb, snap ik dus echt niet waarom je dit formulier niet gewoon aan de tabel Projects hangt; zelfs als ik een maandsalaris extra zou krijgen, zou ik geen logische reden kunnen verzinnen waarom deze constructie nodig is. Wellicht dat een voorbeeldje met je nieuwe situatie dat wèl logisch maakt, maar je eigen tekst doet dat dus bepaald niet. En het gebruik van termen als 'bv' maakt het er ook niet beter op, want daarmee geef je aan dat er ook andere mogelijkheden zijn. En er dus geen vaste structuur is. Maar goed, je kiest hier voor.
Maar goed, je hebt dus blijkbaar 5 velden in de tabel Projects, en 5 velden op je formulier. (Kijk eens hoe natuurlijk je die op je formulier kunt koppelen...) En die velden wil je gebruiken in de bijwerk/toevoeg routine. Dat werkt alleen als je alle velden ook meeneemt in de opdracht.
Dus in ieder geval je SQL string uitbreiden met de extra velden, en ze vullen met je tekstvelden. Als je velden op je formulier logische namen hebben, werkt dit prima:
Code:
    SQL = "SELECT SELECT ID, Details1, Details2, Details3, Details4, Details5 FROM Projects WHERE Projects.ID=" & Me.Combo6
    Set rst = CurrentDb.OpenRecordset(SQL)
    With rst
        If .RecordCount = 0 Then
            .AddNew
            !ID = Me.Combo6
        Else
            .Edit
        End If
        For i = 1 To 5
            .Fields(i) = Me("TextDetails" & i)
        Next i
        .Update
    End With
Maar doe jezelf een lol en stap af van dat moeilijke denken; de db wordt vast nog moeilijk genoeg...
 
Laatst bewerkt:
Excuus voor de vertraging..

Michel, optie A is van toepassing. 5 velden in een record
Ik heb het geprobeerd door SQL regel te kopieeren en de veldnamen hierin aan te passen maar geen resultaalt.
Ook als ik bv rst(2) toevoeg krijg ik geen resultaat (zelfs een melding "Not found in this collection"..)
 
Zoals ik al zei: wordt het niet tijd voor een voorbeeldje? Ik heb geen flauw idee waarom mijn code bij jouw niet werkt.
 
Laten we weer eens naar je voorbeeldje kijken. Om te beginnen, en het begint een vervelende herhaling te worden: je voorbeeldje werkt perfect als je het formulier koppelt aan de tabel Projects. Ben je gelijk van je probleem af. Dus waarom zo moeilijk?
Kijken we nu naar je code, dan zul je hopelijk snel zien waarom die niet werkt.
Code:
Dim rst As Recordset
Dim bAddRecord As Boolean
Dim strSQL As String

    strSQL = "SELECT ID, Text1 FROM Projects WHERE Projects.ID=" & Me.Combo1
    strSQL = "SELECT ID, Text2 FROM Projects WHERE Projects.ID=" & Me.Combo1
    Set rst = CurrentDb.OpenRecordset(strSQL)
    If rst.RecordCount = 0 Then
        rst.AddNew
        rst(0) = Me.Combo1
    Else
        rst.Edit
    End If
    rst(1) = Me.Text1
    rst(2) = Me.Text2
    rst.Update
Je definieert twee keer achter elkaar een SQl string. De eerste wordt dus direct overschreven door de tweede, dus de eerste bestaat na 1 regel uitvoer al niet meer. De procedure kijkt alleen nog maar naar de tweede SQL. Daarvan kan rst(1) nog wel worden uitgevoerd, maar rst(2) niet, omdat je geen 3 velden hebt in de SQL. De juiste syntax (ook van de SQL) heb ik je op 17 juni al gegeven, dus die zou ik maar eens overnemen :)
 
Michel,

Het was me niet opgevallen dat je een syntax al had gepost (nee, zelfs niet opgevallen met het terug lezen van eerdere berichten)
Neemt niet weg dat ik hem nu wel zie staan en met wat aanpassingen naar het huidige voorbeeld werkt het iid

Code:
Private Sub Command1_Click()

Dim rst As Recordset
Dim bAddRecord As Boolean


sql = "SELECT ID, Text1, Text2, Text3, Text4, Text5 FROM Projects WHERE Projects.ID=" & Me.Combo1
    Set rst = CurrentDb.OpenRecordset(sql)
    With rst
        If .RecordCount = 0 Then
            .AddNew
            !id = Me.Combo1
        Else
            .Edit
        End If
        For i = 1 To 5
            .Fields(i) = Me("Text" & i)
        Next i
        .Update
    End With


End Sub

Ik waardeer je hulp zeker maar kan je niet beloven dat ik als beginneling in deze VBA wereld soms twee keer hetzelfde vraag en jij dit als een vervelende herhaling ervaart.

Thanks
 
Vragen an sich zijn (uiteraard) niet vervelend. Wel dat antwoorden blijkbaar niet goed gelezen worden... Wij steken tenslotte ook tijd en moeite in jouw probleem. Dan verwacht je op zijn minst dat de aangeboden oplossingen gelezen worden.

Maar waar ik op doelde was dus dat je een volkomen logische oplossing voor je probleem hebt (koppelen van formulier aan tabel) waardoor je probleem niet eens zou bestaan. En dat je dus niet reageert op mijn vraag waarom je die oplossing niet gebruikt. Een forum is er in eerste instantie om antwoorden op vragen te geven, maar ik voel mij altijd enigszins bezwaard als dat een oplossing is voor een volkomen zinloos probleem. Ik wil niet de indruk wekken aan andere lezers dat dit een vraag is die met VBA moet worden opgelost. In mijn ogen is dit een vraag die helemaal niet gesteld had hoeven worden als me het formulier goed maakt.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan