23. juli 2003 - 20:19Der er
60 kommentarer og 1 løsning
fejl ved ændring af data i database
Jeg har følgende kode:
Private Sub cmdNytIndkob_Click()
On Error GoTo Err Dim curVareNr As Integer
curVareNr = 22
If Trim(txtFakturaNr.Text) = "" Then MsgBox "Du skal indtaste et faktura nummer!", vbOKOnly + vbInformation, "Information": Exit Sub
If Not lstIndkob.ListItems.Count = 0 Then
Set rs = db.OpenRecordset("SELECT * FROM Varelager WHERE " & curVareNr) rs.MoveFirst
For i = 1 To max If rs("VareNr") = curVareNr Then MsgBox "weee" 'til test om den finder mit varenr Dim intIndex As Integer intIndex = lstIndkob.SelectedItem.Index
løkken virker uden = tegn og ikke med så det kan ikke være det..
Synes godt om
Slettet bruger
23. juli 2003 - 20:46#4
Det forstår jeg ikke for man kan altså ikke sige select * from varelager where 22 Det er det din sætning bliver oversat til, men måske den bare tager alle så, det skal jeg ikke kunne sige men så kan du ligeså godt fjerne din where del, ellers post fejlen så vi kan få sætningen rettet til.
Hvad er din max? Fejler den i første forsøg eller hvad?
- tager samtlige rækker i databasen. Det er faktisk korrekt SQL syntaks – hvis du bruger phpadmin vil du dog som regel se den med 1 i stedet for 22.
light -> Det er næppe det du vil have. Den korrekte SQL sætning er:
SELECT * FROM VareLager WHERE VareNr=22
Du siger at det giver en fejl, og den eneste grund til at dette kunne ske, er hvis du ikke har defineret VareNr til at være et tal (f.eks. hvis du har brugt VARCHAR eller lignende). Hvis dette er tilfældet så skal din SQL sætning nemlig se sådan ude i stedet:
SELECT * FROM VareLager WHERE VareNr=’22’
Det har formentlig ikke noget at gøre med din fejl, men der *er* altså en fejl i din SQL og din kode bille aldrig komme til at gøre det du ønsker.
light -> Det var slet ikke mikkers pointe. Det mikker mente var at det lille e blot var et symtom på at der var en fejl lige oven for. Det at fjerne symtomet fjerner ikke selve fejlen.
Nu er jeg ikke VB mand - blev kun rodet ind i dette fordi at jeg kan se at din SQL er forkert - men jeg laver en del ASP i VBScript. Jeg skal derfor ikke udtale mig alt for skråsikkert; Er der overhovedet noget som hedder rs.Edit i VB - for det er der altså ikke i VBScript. Det kan sagtens tænkes at grunden til at e'et ikke bliver stort er at din editor slet ikke kender det. Hvis du har syntaks-farvning på, kunne et andet tegn være at den ikke farves på samme måde som f.eks. rs.Update.
Og prøv at læs og forstå mikkers bemærkninger - de er ret så væsentlige. Hvis VB ikke retter til/fra lovwercase, er det fordi den ikke genkender variablen/kommandoen- og det fortæller dig om en fejl... :o)
Ja, men din WHERE-del i din SQL-sætning er helt forkert og har ikke den betydning du forventer. Mon ikke du får retureneret et tomt recordsæt? Brug 10 minutter på den SQL-tutorial, og spar dig selv for en masse problemer :o)
Nu har jeg ikke VB på denne PC, men jeg har ALDRIG hørt om en property eller lignende der IKKE starter med stort. Retter VB ikke fra .edit til .Edit, kan den ikke genkende kommandoen. Måske fordi Rs ikke er dim'met korrekt?
Nå - jeg ville ikke overtage mikker og nielles "diskussion", bare komme med indsparket om den SQL-tutorial. Good luck til allesammen med denne tråd...
light: Når du laver en kode som så tydeligvis er forkert, og du mener det virker, og laver du koden korrekt, og du derefter mener at det IKKE virker, har du enten helt misforstået hvad koden gør, eller så har du ikke kontrolleret, at du modtager det rigtige i dit recordsæt...
Hvis du vil programmere, kan du altså ikke skrive noget kode, som du VED er forkert, og derefter antage den er korrekt og at den virker!!! Måske virker det somom koden fungerer OK, men jeg kan garanterer dig, at der er alvorlige fejl i din kode, hvis du retter noget forkert og det derefter ikke virker!!!
Tager intet tungt, så kom du bare med bemærkninger, men bliv så ikke selv sur hvis jeg antyder, at du måske har påtaget dig en opgave, du ikke helt kan magte. Måske skulle du kaste dig over noget VB-litteratur inden du går videre? Det er altså en god ide at lære det hele ordentligt fra starten og undgå spagettikode, som 10 forskellige mennesker har været med til at lave - det vil aldrig blive godt!
Synes godt om
Slettet bruger
23. juli 2003 - 22:30#30
Jeg har ikke adgang til vb før imorgen så hvis du kan vente til imorgen aften må du gerne sende det til mig, sammen med din database.
light -> Som sagt er jeg ikke VB-mand, men jeg fortæller dig bare i VBScript er der ikke noget som hedder rs.Edit (og, "ja" jeg var nu godt klar over at det var et recordset!).
I et Access ADP project er der heller ikke nogen .Edit men i en alm. MDB er der og den SKAL VBA sel skrive som .Edit - ellers er det indikation af at der er noget galt.
Personligt kunne jeg godt tænke mig at se lidt nærmere på den db - der er ugler i mosen.
Løkken går fra 1 til max - men max får aldrig sat en værdi..?
Kan stadig ikke forstå hvorfor du ikke bruger det eksempel jeg gav dig i et andet spørgsmål. Det er let og overskueligt, bruger ingen .Edit kommando og det virker...
Men tror jeg hopper af denne tråd nu. Held og lykke
max får sat en værdi - det har ejg bare ikke fået skreevt i koden her i sørgsmålet og jeg har også tænkt mig at forstå det men det tager for lang tid for jeg skal på ferie og jeg vil gerne have lavet det inden søndag...
Private Sub cmdNytIndkob_Click() 'On Error GoTo Err Dim intIndex As Integer Dim curvare
curvare = lstVarelager.SelectedItem.ListSubItems(1).Text 'curvare = lstVarelager.ListItems(intIndex).SubItems(11) If Trim(txtFakturaNr.Text) = "" Then MsgBox "Du skal indtaste et faktura nummer!", vbOKOnly + vbInformation, "Information": Exit Sub
If Not lstIndkob.ListItems.Count = 0 Then
Set rs = db.OpenRecordset("Varelager", dbOpenTable) rs.MoveFirst max = rs.RecordCount For i = 1 To max If rs("varebetegnelse") = curvare Then MsgBox "weee" intIndex = lstIndkob.SelectedItem.Index rs.edit rs("Kobt") = lstIndkob.ListItems(intIndex).SubItems(2) rs("Antal") = rs("Antal") + lstIndkob.ListItems(intIndex).SubItems(2) rs("LagerVardi") = rs("LagerVardi") * rs("Antal")
rs.Update
Else 'MsgBox "shitty shit shit" End If
rs.MoveNext
Next i
End If
Exit Sub
Err: MsgBox "Der opstod en fejl ved registrering af indkøbet!", vbOKOnly + vbExclamation, "Fejl" End Sub
light: tror du skulle læse i de "ubrugelige" bøger. Jeg synes dine spørgsmål bærer præg af at du ikke har læst ret meget i dem (no offense ;-)
Hvorfor i alverden giver du os en del af en kode, hvor du har taget nogle mellemlæggende linier ud? Max skal jo sættes EFTER at du har hentet recordsættet...
Dit projekt ser meget stort ud og du slipper nok ikke for at kigge i dine bøger, men du er naturligvis altid velkommen til at spørge her. Dog må jeg give Martin ret i at du bør dele HELE koden - det gør det nemmere at hjælpe - og det er jo det vi er her for :o)
mikker >>> der er et lille problem... kan du ikke lave det om så den tager VareNr fra lstIndkob og søger efter og går videre til næste ??
jeg har nemlig lige gået videre og gemt i en anden tabel også og der går den helt i fuck fordi der gemmer den VareBetegnelsen som den samme fordi den samme er markeret i lstVarelager og det må den jo ik ;)
anyways den skal ikke søge efter det der er markeret i lstVarelager men løkken skal først søge efter VareNr fra den første række i lstIndkob og derefter det næste osv... kan du plzz hjælpe mig med det sidste her ?
light skrev: " bare glem det martin - og tag lige og styr dig med de spydige bemærkninger... "
Sjovt nok er du, light, den eneste der bander og svovler. Jeg har ikke givet spydige bemærkninger, kun venligt mente råd. Derfor sætter jeg smilies osv. Var de spydige, ville du slet ikke vælre i tvivl om det!
Jeg HAR givet dig et svar der virker i dit andet spørgsmål, at du så ikke gider bruge to minutter på at forsøge at forstå svaret, og evt stille supplerende spørgsmål, er din egen fejl. Det fortæller bare en del om dig - at du beder andre om hjælp, men gider ikke selv leverer en indsats!
Du skriver kode, der tydeligt afslører, at du ikke har forstået noget som helst af det du sidder og arbejder med (fx. din SQL-sætning) - det på trods af, at jeg i et andet spørgsmål har skåret ud i pap hvordan syntaksen er, og henvist til tutorials osv.
light, måske har du ikke forstået, at jeg (og alle de andre) rent faktisk forsøger at HJÆLPE dig - endda ganske gratis. Det er skam ment som en HJÆLP, når jeg siger, at du bør sætte dig ind i programmering før du forsøger at lave et program. Ligesom det er en god ide at tage et kørekort før man tager bilen en tur...
og jeg har aldrig været i tvivl om det var spydigt eller ej - det mener jeg det var da jeg føler jeg bliver trådt på og gjort til grin af dig og det finder jeg mig ikke i...
desuden martin kan jeg se du ikke har forstået mit sidste spørgsmål ordenligt så jeg kan sige det samme om dig - du bruger ikke nok tid på at forstå mit spørgsmål og jeg ønsker ikke at bliver uvenner med nogen jeg følte mig bare ttrådt på af dig...
Jeg bruger tid på at give dig ordentlige svar (igen - ganske gratis, kun for at hjælpe), og kan se på din kode, at du med fordel kunne bruge lidt tid på at lære lidt mere om VB... Så det foreslår jeg du gør. Og så begynder du at tude!
NB: Du har du brugt 54 (!!!!) indlæg på at få noget så simpelt som at ændre i en database til at virke. Læste du de rigtige to sider i en VB-bog ville du kunne klare det på 2 minutter.
Men fint - jeg skal nok undlade at svare på dine spørgsmål, men jeg har altså ikke været spydig før dette indlæg og indlægget forinden...
Du skulle bare tage at lytte efter hvad folk siger til dig - bemærkninger som
"din kode virker ikke hos mig og sådan er det... slut " (fra en anden tråd)
kommer du ikke ret meget videre med. Slet ikke når jeg tilbyder at fortælle hvad der går galt, hvis du ellers gad beskrive hvad det er der ikke virker.
Men - jeg har jo lovet at holde mig fra dine indlæg, så dette bliver det sidste indspark fra mig!
light>> Jeg forsøgte faktisk at få den til at tage varenr, men det kunne jeg ikke lige umiddelbart og jeg har ikke sat mig ind i listview kontrollen. Jeg er sikker på at du kan løse det meget hurtigere. Hvis jeg får tid i løbet af weekenden skal jeg lade dig det vide :o)
Til sidst vil jeg lige sige, at det smerter mig at se to personer dele verbale øretæver ud på den gfrusomme måde. Jeg tror ikke light er ude på at genere nogen og jeg kender Martin godt nok til at vide at han er ekstremt hjælpsom. At man bliver lidt irritabel, når man ikke føler folk hører efter (gælder begge veje), er vel kun naturligt - jeg gør det selv :o) men kan vi ikke se om vi kan stoppe denne konflikt og lade Eksperten få sin båndbredde igen ?
He he - så kommer gangvagten op i mikker. Jeg skal nok opføre mig pænt nu ;o) Og skal nok huske, at det ikke er en chat, men et forum til at diskutere IT-problemer. Og nu går jeg på ferie, så skal der nok blive ro :o)
God ferie min ven - kom snart igen... Den fandt jeg lige på selv :o)
- Mikker
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.