• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Probleem overschrijven database

Status
Niet open voor verdere reacties.

libregts65

Gebruiker
Lid geworden
14 jun 2013
Berichten
43
Ik heb een invul formulier gemaakt voor projecten die worden opgeslagen in een database
Nu als ik hem wil wijzigen slaat hij hem als een nieuw regel op inblaast dat hij de bestaande veranderd
Tevens zou ik een reken functie erin hebben bijvoorbeeld als ik een deel factuur invul dat hij laat zien wat er open staat
 
Dat is dus een volledig programma dat je wil :(.
Begin er aan... laat zien wat je hebt, en probeer de problemen stukje voor stukje op te lossen.
Desnoods vraag je hier wat je volgende stap kan zijn.
 
Het is zo dat het helemaal klaar is maar op een of andere manier schrijft hij hem niet over maar opnieuw ik zal morgen het bestand erbij doen
 
Lijkt mij een goed plan :).
 
Bestand

Ik loop tegen 3 problemen aan

1 als ik een bestand Modify dan zou hij moeten zoeken op project naam, fout melding is Getal is ongeldig
2 Als hij Wel werkt dan schrijft hij hem niet over maar maakt hij een nieuw lijn aan in de DATAbase
3 Hij overschrijft ook het openstaande saldo die hoeft alleen maar zichtbaar tezijn in het FORM als ik nieuwe gegevens toe voeg
 

Bijlagen

Hallo libregts65,

1- DIM van de Projectnaam is Long (getal) maar je Projectectnaam is tekst (D006 010-2019)
DIM moet volgens mij dan ook String zijn


Rikja
 
De foutmeldingen in Modify hebben inderdaad met tekst >< getal te maken.
Zowel in het declareren van je variabelen, als in de inputbox (laatste argument mag niet 1 zijn, maar moet 2 zijn) Eventueel zelfs weglaten

Code:
Sub Modify()

    Dim iRow As Long
    Dim PROJECTNAAM As String
    
    
    PROJECTNAAM = Application.InputBox("Please enter PROJECTNAAM to make modification.", "Modify", , , , , , 2)

ik zoek nog even verder voor het wijzigen van gegevens.
 
En nu je save:

Code:
Sub Save()

    Dim frm As Worksheet
    Dim database As Worksheet
    
    
    Dim iRow As Long
    Dim iSerial As Long
    Dim rng As Range
    
    Set frm = ThisWorkbook.Sheets("Form")
    
    Set database = ThisWorkbook.Sheets("Database")
    
    
    If Trim(frm.Range("Q1").Value) = "" Then
        Set rng = database.Range("C:C").Find(frm.Range("I7").Value)
        If Not rng Is Nothing Then
            iRow = rng.Row
'
        Else
                iRow = database.Range("A" & Application.Rows.Count).End(xlUp).Row + 1
                
                If iRow = 2 Then
                
                    iSerial = 1
                    
                Else
                
                    iSerial = database.Cells(iRow - 1, 1).Value + 1
                
                End If
        End If
        
    Else
    
'        iRow = frm.Range("L1").Value
        iSerial = frm.Range("Q1").Value
    
    End If
    
    
        
    
    With database
    
        .Cells(iRow, 1).Value = iSerial
        
        .Cells(iRow, 2).Value = frm.Range("I6").Value
        
        .Cells(iRow, 3).Value = frm.Range("I7").Value
        
        .Cells(iRow, 4).Value = frm.Range("I8").Value
        
        .Cells(iRow, 5).Value = frm.Range("I9").Value
        
        .Cells(iRow, 6).Value = frm.Range("I11").Value
        
        .Cells(iRow, 7).Value = frm.Range("I13").Value
        
        .Cells(iRow, 8).Value = frm.Range("I14").Value
        
        .Cells(iRow, 9).Value = frm.Range("I16").Value
        
        .Cells(iRow, 10).Value = frm.Range("I17").Value
        
        .Cells(iRow, 11).Value = frm.Range("I18").Value
        
        .Cells(iRow, 12).Value = frm.Range("I20").Value
        
        .Cells(iRow, 13).Value = frm.Range("I21").Value
        
        .Cells(iRow, 14).Value = frm.Range("I22").Value
        
        .Cells(iRow, 15).Value = frm.Range("I24").Value
        
        .Cells(iRow, 16).Value = frm.Range("I26").Value
        
        
        .Cells(iRow, 17).Value = Application.UserName
        
        .Cells(iRow, 18).Value = [Text(Now(), "DD-MM-YYYY HH:MM:SS")]
        
    
    End With
    
    
    frm.Range("L1").Value = ""
    frm.Range("P1").Value = ""
    
    

End Sub

Enkel de bestaande volgnummer behouden heb ik nog niet in orde gebracht, maar dat zal je nu wel lukken.
 
Toppers

Echt bedankt hij loopt nu zoals het moet

Maar dan heb ik toch nog 1 kleine vraag vraag

Nu zoekt hij op de complete naam van de OPDRACH is het mogelijk om bijvoorbeeld te zoeken op een deel van het woord of wordt het dan allemaal een stuk moeilijker
 
dat kan natuurlijk, maar ik vermoed dat je dan zelf voor fouten gaat zorgen.

Veronderstel dat je naar steden gaat zoeken... en je zoekt naar Brugge, dan zou het wel 's kunnen dat je Bambrugge vindt. (omdat die bijvoorbeeld vooraan staat in het alphabet.
Zoek je in Excel naar de eerste naam, dan heb je mogelijk ook niet Brugge, maar Gent-Brugge, omdat die in je tabel per ongeluk vooraan staat.

Misschien zou je moeten werken met een keuzelijst in je dialoogvenster, waar het al makkelijker is om de juiste naam te vinden.
 
Hallo Luc,

Enkel de bestaande volgnummer behouden heb ik nog niet in orde gebracht, maar dat zal je nu wel lukken.

Misschien

Code:
   .Cells(iRow, 1).Value = iSerial

weglaten ?

Rikja
 
Waarom gebruik je geen Userform? Waarom gebruik je samengevoegde cellen? Waarom gebruik je Call? Waarom zoveel regels code? Waarom gebruik je geen echte tabel als database? Het hele project kan met een paar regels code afgehandeld worden. Er zijn voldoende voorbeelden te vinden op deze site.

Als voorbeeldje voor het leegmaken.
Code:
Private Sub cmdReset_Click()
  If MsgBox("Do you want to reset the Form?", vbYesNo + vbQuestion, "Reset") Then
     With Sheets("Form").Range("I6:L9,I11:L11,I13:L13,I14:J14,I16:L16,I17:L17,I18:J18,I20:L20,I21:L21,I22:J22,I24:L24,I26:L29")
      .Interior.Color = xlNone
      .ClearContents
    End With
  End If
End Sub
 
Laatst bewerkt:
Waarom gebruik je geen Userform? Waarom gebruik je samengevoegde cellen? Waarom gebruik je Call? Waarom zoveel regels code? Waarom gebruik je geen echte tabel als database? Het hele project kan met een paar regels code afgehandeld worden. Er zijn voldoende voorbeelden te vinden op deze site.

Waar is die tirade voor nodig?

Misschien... wilt TS iets leren uit zijn eigen code ...
Misschien... wilt LucHendrickx TS helpen zonder te forceren...
Misschien... ben je wel oud, maar zoals jij wenst dat men jou respecteert, zo hoort heb toch ook dat jij wat meer respect mag hebben voor andere mensen, niet?

Ik wens je een goede nachtrust, VenA

Rikja
 
Laatst bewerkt:
Het is geen tirade slechts een vragenlijstje. Iemand verder helpen met een slecht ontwerp vind ik meer een onkunde van de helper dan iemand erop wijzen dat het beter kan. Jij begint zeker eerst met het dak te bouwen om er vervolgens achter te komen dat de fundering hier niet op berekend is? Al doende leert men maar wel een dure les.
 
Hallo VenA,

TS geeft aan beginner te zijn. TS heeft geen vraag gesteld over de macro cmdReset().
LucHeyndrickx is een zeer begaafd Exel-expert, die nog steeds zijn strepen verdient met hulp op oa MrExcel, Microsoft.Public.Office, Excelworks en vele andere sites.

Je hebt gelijk, het was geen tirade. Het was bijna onbeschoft.

Rikja
 
@emields
Je hebt inderdaad al een goed uitgewerkt voorbeeld. Proficiat. En hier zal librechts zeker iets aan hebben.
Ik heb bij deze vraag enkel gekeken hoe de fout binnen de code opgelost kon worden. Niet hoe ik de ganse code zou kunnen verbeteren. Vandaar dat jouw voorbeeld natuurlijk nog stukken beter is dan hetgeen ik gegeven heb.

Mails; chat enz. komen vaak wel wat harder aan dan ze bedoeld zijn. Laat ons dus gewoon de zaak laten rusten, en iedere bijdrage naar waarde schatten.

nog een goede morgen,
Luc
 
Ik vind de bijdragen van Rikja niet constructief en al helemaal niet inhoudelijk, dus overbodig.
 
Hallo snb,

en deze van VenA vind je dan waarschijnlijk WEL inhoudelijk en constructief?

Waarom gebruik je geen Userform? Waarom gebruik je samengevoegde cellen? Waarom gebruik je Call? Waarom zoveel regels code? Waarom gebruik je geen echte tabel als database? Het hele project kan met een paar regels code afgehandeld worden. Er zijn voldoende voorbeelden te vinden op deze site.

Nog de beste wensen voor het nieuwe jaar.

Rikja
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan