Avatar billede light Praktikant
20. juli 2003 - 20:10 Der er 24 kommentarer og
2 løsninger

Finde et bestemt tal i en bestemt kollonne(beklager point mængde)

Når jeg trykker på en knap (Command1) skal de checke i en database fx: et vare nr. står i databasen....

altså når ejg trykker på command1 skal den connecte til en database (db1.mdb) og gå ind i kollonnen VareNr og se om det der står i text1 findes der...

hvis ja, skal den lægge 1 til... (text1 er KUN tal)

hvis nej, skal den bare sige i en msgbox "Vare Nr. ikke fundet"


er der en venlig sjæl der vil hjælpe mig med det ?

og beklager selvfølgelig at jeg ikke kan give flere point
men det kniber lidt med dem for tiden..
Avatar billede martin_moth Mester
21. juli 2003 - 00:48 #1
Der er 1000 svar omkring hvordan der opkobles til databaser - kopierer fra et af mine egne svar, og tilføjer lidt, så det passer til dit spørgsmål:

Dim rec As Recordset
Dim DB as Database 
Dim i as integer
Dim VarenummerFundet as Boolean
VarenummerFundet = False

Set DB = Workspaces(0).OpenDatabase("C:\database.mdb")
Set rec = DB.OpenRecordset _
    ("SELECT Række1 FROM Tabel, dbOpenSnapshot)
'Række1 og Tabel er navne angivet i din database - ret selv navnene

Do While Not rec.EOF
  if rec!Række1 = Val(Text1.Text) Then
    rec!Række1 = rec!Række1 + 1
    VarenummerFundet = true
  end if
  rec.MoveNext
Loop
If not VarenummerFundet then msgbox "Varenummer ikke fundet"
rec.Close
set DB = nothing
Avatar billede martin_moth Mester
21. juli 2003 - 00:53 #2
NB: Kan optimeres meget - du kan hoppe ud af loopet såsnart if-sætningen opfyldes, eller meget bedre: Du kan rette dit SQL-udtryk så det undersøger om dit varenummer findes, så du ikke behøver hente hele tabellen og loope over den. Brug ordet 'WHERE'.

Læs og bliv meget klogere på SQL på www.w3schools.com/sql/sql_intro.asp - bestemt værd at bruge 10 minutter på

Specielt om WHERE:
www.w3schools.com/sql/sql_where.asp

NB: Kunne godt give dig koden - men du vil vel også gerne forsøge lidt selv, ikke? Det er det man bliver klogere af ;o)
Avatar billede light Praktikant
21. juli 2003 - 17:27 #3
kæft det er rart at se at der er en som dig der vil hjælpe og ikke kun for points :)

jeg kigger lige på WHERE tingen der :)

jeg melder tilbage engang i aften ;)

takker mange gange indtil videre :)
Avatar billede light Praktikant
21. juli 2003 - 18:32 #4
øhh har lidt problemmer med den der WHERE paragraf... kunne du lave din kode om så den var med WHERE i stedet ??
Avatar billede light Praktikant
21. juli 2003 - 18:45 #5
hehe - selvfølgelig vil jeg forsøge selv men det er lidt træls når man ikke får noget ud af det når men har siddet i en time med det ;)
Avatar billede martin_moth Mester
22. juli 2003 - 07:50 #6
Syntax: SELECT column FROM table WHERE column operator value
Masser af eksempler i de links jeg gav

Ellers brug den løsning jeg allerede har vist

Desuden er der vist en egenskab .Find på et recordsæt - så læs det hene ind i et recordsæt (SELECT * FROM tabel) og brug rec.Find
Avatar billede light Praktikant
22. juli 2003 - 17:29 #7
skal jeg så skrive

/SELECT * FROM tabel) rec.find = txtVareNr.Text

???
Avatar billede light Praktikant
22. juli 2003 - 19:51 #8
jeg har følgende der starter med FIND (men ingen bare "rs.find"

rs.FindFirst
rs.FindLast
rs.FindNext
rs.FindPrevious

:S
Avatar billede martin_moth Mester
22. juli 2003 - 19:56 #9
1. Syntax: SELECT column FROM table WHERE column operator value
Masser af eksempler i de links jeg gav

2. Ellers brug den løsning jeg allerede har vist

3. Desuden er der vist en egenskab .Find på et recordsæt - så læs det hene ind i et recordsæt (SELECT * FROM tabel) og brug rec.Find

1, 2 og 3 er alternativer, der ikke skal kombineres. Bemærk ordet "vist" i punkt 3 :o)
Avatar billede light Praktikant
22. juli 2003 - 22:28 #10
hehe (det er der så ik ;)
Avatar billede light Praktikant
23. juli 2003 - 09:35 #11
jeg kan ikke få det til at virke :(
Avatar billede martin_moth Mester
23. juli 2003 - 10:01 #12
Vis din kode og skriv hvad fejlmeddelsen er... Brug f.eks. mit første svar - det er det allersimpleste (synes jeg)
Avatar billede light Praktikant
23. juli 2003 - 17:30 #13
det er opstillet meget mere med database som jeg har skrevet...

men ok jeg skriver den nu
Avatar billede light Praktikant
23. juli 2003 - 17:32 #14
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
       
        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
        'ingenting
    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
Avatar billede martin_moth Mester
23. juli 2003 - 19:12 #15
Så mangler du bare at sige hvad det er der ikke virker -- men jeg er næsten sikker på at du får fejl i linien
Set rs = db.OpenRecordset("SELECT * FROM Varelager WHERE " & curVareNr)

WHERE " & curVareNr er nemlig noget vrøvl, der bestemt ikke følger den syntaks jeg har skrevet et par gange, at den skal følge...

Hvorfor bruger du ikke den kode jeg har givet dig?
Avatar billede light Praktikant
23. juli 2003 - 19:14 #16
den linje du skriver virker fint og har testet det med at søge med den linje og det virkede perfekt

rs("Kobt") = lstIndkob.ListItems(intIndex).SubItems(2) <--- denne linje er problemmet...

når jeg siger debug siger den "Update or Cancel Update without AddNew or Edit

og det synes jeg er noget vrøvl ;)

ps.: har du MSN ??

det er nemmere at snakke der !!
Avatar billede light Praktikant
23. juli 2003 - 19:15 #17
rs er mit recordset ;)
Avatar billede light Praktikant
23. juli 2003 - 19:36 #18
kigger du pådet nu ?
Avatar billede martin_moth Mester
23. juli 2003 - 19:43 #19
Nej - linien
Set rs = db.OpenRecordset("SELECT * FROM Varelager WHERE " & curVareNr)
er forkert!
Avatar billede martin_moth Mester
23. juli 2003 - 19:46 #20
Du kan lige så godt droppe Where-delen, da du ikke bruger den til noget...

Jeg synes at du skulle bruge mit eksempel, hvis du ikke kan få din egen kode til at virke...
Avatar billede light Praktikant
23. juli 2003 - 20:15 #21
min kode virker fint med at søge og jeg kan netop ikke få din til at virke

jeg har skervet det - læs mine beskeder da
Avatar billede light Praktikant
23. juli 2003 - 20:16 #22
din kode virker ikke og min gør og du vil ikke hjælpe mig med sidste del det kan kun give halt point... SELV OM det er næsten ingen points

ved godt det er venligt af dig at hjælpe for så points men det virker ikke
Avatar billede light Praktikant
23. juli 2003 - 20:25 #23
desuden er , dbOpenSnapshot der ikke
Avatar billede martin_moth Mester
23. juli 2003 - 20:37 #24
Min kode virker!
Tak for points!
Avatar billede light Praktikant
23. juli 2003 - 20:49 #25
din kode virker ikke hos mig og sådan er det...

slut
Avatar billede martin_moth Mester
23. juli 2003 - 22:05 #26
Jamen den virker - det garanterer jeg!

Så er det fordi du ikke har rettet rækkenavnene, tabelnavnene mv, eller ikke har oprettet en reference til ADO. Koden er korrekt. Men nok om det...

I øvrigt svært at sige hvad du har gjort forkert, når du ikke siger HVAD fejlen er. Men altsammen ligemeget, hvis du har fået din egen kode til at virke i stedet for :o)

Over & out
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging