Avatar billede amnesia5230 Nybegynder
13. februar 2006 - 10:56 Der er 2 kommentarer og
4 løsninger

kasseapperat, beregning overførelse til regning.

Jeg står overfor et programmeringsproblem, som jeg ikke selv står til at løse, med mine begrænsede evner i Visual Basic.

Programmet ser ud som følger: http://peecee.dk/?id=28835

Jeg har fået loaded mine navne på retter samt drikkevarer fra databasen og ind i mine comboboxe.

Samtidig har jeg også fået gjort så ved valg af en ret og efterfølgene tryk på indsæt, så kommer prisen på den ret frem i boksen regning.

Det jeg så skal bruge hjælp til, er hvordan jeg får multipliceret de forskellige retter, med det antal jeg angiver i boksen ved siden af indsæt.

Samtidig vil jeg også gerne vide hvordan jeg får programmet til at indsætte så både navnet på retten, stk prisen og den samlede pris står på én enkelt linie i min regning.

Det skal så være sådan at når jeg får brug for at tilføje mere til regningen, så kommer det på næste linie.

Jeg har så selvfølgelig også brug for at skulle regne alle priserne sammen, til en pris Ialt - som kunden så skal betale.


Hvis der er nogen der er i tvivl om noget i mit problem, så må de endelig sige til - så skal jeg komme med noget nærmere info.

Håber at der er nogen gode hoveder derude, som kan tygge sig igennem dette :)
Avatar billede thomaxz Nybegynder
13. februar 2006 - 12:23 #1
Jeg går udfra at din regning felt er en tekstboks, så kan du når du overøføre navne og prisen til regning sætte
& vbcrlf
eller
& vbnewline
bagefter f.eske

text1.text=text1.text & strMad "....." & strPris & vbnewline

du kan og så sætte den før , din nye linie

text1.text=text1.text & vbnewline & "mad .....20,00"

-------
har kaldt ret navnet for strMad i eks.
har kaldt prisen en variebl for strPris i eks.
------------------------------------------------------
ang. multilplikation
kunne du f.es udksrive det på regning som

2 x Mad af 20,00 i alt 40,00

selvemåden du gør det på kommer an på hvordan du har kodet det men vil gå ud fra du udskriver påregning lidt ligeso ekseple fra før.

mtotal=retPris*val(text1.text)
'mtotal, mellem total, total af den regning der lægger retterne sammen
'jeg har navngive din antal boks som text1.text

strPirs=str$(retPris)
'konvetere psien til str for udskrivning

text1.text=text1.text & text1.text & " x "& strMad "....." & " af "  &strPris & " i alt " & mtotal & vbnewline
'tilføj til reninge

ialt=ialt+mtotal
'optæl totalt

--------------------------
du kunne evt. tjek med en if

if text1.text=="" then
mtotal=retPris*1
else
mtotal=retPris*val(text1.text)
end if

så den går ud fra at det er 1, hvis der er ikke er skrevet noget i boksen.
-------------------------

det ville være nmmere for mig at hjælpe dig, hvis jeg kunne se f.esk koden for hvad der sker når der trykker på indsæt.

mvh.
Thomas
Avatar billede amnesia5230 Nybegynder
13. februar 2006 - 12:33 #2
Jeg forstår ikke helt, så du får lige link til hvor du kan hente det jeg er nået indtil videre - så kan det være du bedre kan ordne det.

http://peecee.dk/?id=28846
Avatar billede thomaxz Nybegynder
13. februar 2006 - 14:48 #3
ok, har taget ugangspunkt i hovedret funktionen.

i stedet for


txtRegning.Text = Rs("Pris")

kan du bruge f.esk

if txtGangeHoved.text=""
  txtRegning.Text = Rs("Pris")

else
  txtRegning.Text = (Rs("Pris")*val(txtGangeHoved.text))
end if

du kan også vælge at placere din fejlahndling der

if txtGangeHoved.text=""
  txtRegning.Text = Rs("Pris")
else
    If Not IsNumeric(txtGangeHovedret.Text) Then
      MsgBox prompt:="Fejl i indtastning, indsæt TAL.", Title:="FEJL"
    else
      txtRegning.Text = (Rs("Pris")*val(txtGangeHoved.text))
    end if
end if

-------------
Koden over skulle løse det nedeståen spørgsmål
---
Det jeg så skal bruge hjælp til, er hvordan jeg får multipliceret de forskellige retter, med det antal jeg angiver i boksen ved siden af indsæt.

-----------------------

*********************************
for at løse:
-------
Samtidig vil jeg også gerne vide hvordan jeg får programmet til at indsætte så både navnet på retten, stk prisen og den samlede pris står på én enkelt linie i min regning.

-----------

vil jeg foreslå du ændre



if txtGangeHoved.text=""
  txtRegning.Text = Rs("Pris")
else
  txtRegning.Text = (Rs("Pris")*val(txtGangeHoved.text))
end if

til

if txtGangeHoved.text=""
  txtRegning.Text = txtRegning.Text & ComboHovedretter.Text & " " & Rs("Pris") & vbNewline
else
  txtRegning.Text = txtRegning.Text & ComboHovedretter.Text & " " &  str$(val(Rs("Pris"))*val(txtGangeHoved.text)) & vbNewline
end if

--------------------------
*************************************************************
for at løse sammen regning problemmet, regner vi den i variabel i alt, undervejs.
Public ialt as Single 'for komma, skal ærklære i topen uden for function og sub's

if txtGangeHoved.text=""
  txtRegning.Text = txtRegning.Text & ComboHovedretter.Text & " " & Rs("Pris") & vbNewline

  ialt=Ialt+val(Rs("Pris"))
else
  txtRegning.Text = txtRegning.Text & ComboHovedretter.Text & " " &  str$(val(Rs("Pris"))*val(txtGangeHoved.text)) & vbNewline

  ialt=Ialt+val(Rs("Pris"))*val(txtGangeHoved.text)
end if

den kdoe over, hvis du sætter den ind, ved din    txtRegning.Text = Rs("Pris")
så mener jeg den skulle løse alle tre problemmer.
************************************************
-Thomas
Avatar billede amnesia5230 Nybegynder
13. februar 2006 - 19:51 #4
Tak for svaret, hvilket virker udmærket - dog forstår jeg ikke helt det sidste, måske du gad forklare det lidt nærmere?

Det jeg taler om er dér hvor jeg ønsker at regne samtlige ting på regningen sammen, altså måske både drikkevarer, hovedretter og desserter f.eks..

Det kan godt være det står som det skal stå, men jeg mangler lidt forståelse for hvad der sker.
Avatar billede thomaxz Nybegynder
14. februar 2006 - 08:22 #5
jeg kan prøve:

ialt=Ialt+val(Rs("Pris"))

denne lægger prisen til variable ialt.

hvis i alt f.eks. er 0 og pris er 25

vil der egetnlig stå

ialt=0+25

nu vil ialt er være 25, når du så lægger f.eks en drikke var til 10 kr.

ialt=25+10 '25 for de ialt var 25 fra frø

ialt vil nu være 35.
---------------------
det er den ekstra linie med ialt,

når du tilføjer en vare, bliver den ved med at lægge til ial, når du så er færdig, er det regnede sammen.

så hvis du under f.esk bereng, elelre print, tilføjer

txtRegning.Text = txtRegning.Text & "I alt: " & str$(ialt) & vbnewline

så skulle tottal prisen komme frem.

*****************************************

strVar=strVar & "H" 'dettet giver strVar=H
strVar=strVar & "j" 'dettet giver strVar=Hj , fordi strVar allerede var H



når du sætter en variable lig den selv først og tilføjeer mere teksdt med &, bliver variable sig sevl + det nye, det samme gælder regnerstykke +-*/


& er en delimiter, seperator,adskiller den adskilelr variable for teskt eller flere variabler

strVar=variable1 & "tekst"
strVar="tekst1" & variable1 & "tekst1"
strVar="tekst1" & variable1 & "tekst1" & variable2
strVar=variable1 & "tekst" & variable2


vbNewLine er en konstant der indeholder et linieskift
Avatar billede thomaxz Nybegynder
14. februar 2006 - 08:24 #6
val() er en funktion der omsætter en tekststring til tal, nødvendig for at der kan regnes med tal der er deklrede som tekst

str$() er en funktion der omsætter tal til tekstformatering, nødvendig for at der kan udskrive i f.esk en teksboks

håber det hjalp på forståelsen.

-Thomas
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