Avatar billede mc.lucifer Praktikant
19. august 2004 - 11:30 Der er 21 kommentarer og
2 løsninger

True skal være lig 0 i vb

Jeg har en access db som jeg køre mod via sql i VB.

Jeg har ca 200 felter "Som jeg lige har lavet" af typen boolean Altså "True eller False" nu skal jeg have samme antal check til at reagere på dem, jeg er udemærket klar over at jeg skal igenem

check1.value = rs!Tabelnavn
check2.value = rs!tabelnavn2

Men mit problem ligger nu i at tabelelrne indeholder jo som sagt værdien true eller false og check´s value kan kun tage i mod 0 eller 1

Hvad gør jeg af smarte ting her.

MC
Avatar billede kaptajnkemo Nybegynder
19. august 2004 - 11:32 #1
Prøv:

check1.value = (rs!Tabelnavn?1:0)
Avatar billede Slettet bruger
19. august 2004 - 11:36 #2
I VB er true = 1 og false = 0 så umiddelbart burde det da virke? Får du nogle fejl eller hvad?
Avatar billede mc.lucifer Praktikant
19. august 2004 - 11:37 #3
ikke godt, det vil den ikke acceptere, Skal lige siges at jeg køre Visual basic 6,0 ms sp 6 hvis det har noget at sige,

Enten skal jeg have fortalt VB at når den ser en true skal den om danne dette til 1 og False skal være 0.

Ellers skal jeg jo have lov til at skrive 0 og 1 i Boolean db´en

eller skal jeg have check til at godtage false og true istedet for 0 og 1

MC
Avatar billede mc.lucifer Praktikant
19. august 2004 - 11:39 #4
Jeg for invalid propety value
når jeg skriver

Check1.Value = rs!Kempi
Avatar billede kaptajnkemo Nybegynder
19. august 2004 - 11:41 #5
mc:> Skal din kommentar fra 19/08-2004 11:37:08 forstås som svar på mit forslag eller bertie's kommentar?

Det jeg mener er.... har du prøvet mit forslag? ;)
Avatar billede rbj_fp Nybegynder
19. august 2004 - 11:42 #6
du kunne prøve følgende funktion

private function ConvertValue(byVal value as integer) as boolean
  if value = 1 Then
      ConvertValue = true
  else
      ConvertValue = false
  end if
end function

Desuden hvis du anvender en Access Database burde du bare kunne indsætte check1.value på det rigtige felt i databasen
Avatar billede Slettet bruger
19. august 2004 - 11:45 #7
Hmm jeg siger heller ikke sandheden, true er åbenbart = -1 og ikke 1 som jeg regnede med så du har helt ret den virker ikke false virker dog. Jeg går lige i tænkeboks :-)
Avatar billede kaptajnkemo Nybegynder
19. august 2004 - 11:48 #8
puha bertie... Endnu en ting jeg kan føje til min liste af argumenter for at VB ikke bør anses som et programmeringssprog ;)
Avatar billede mc.lucifer Praktikant
19. august 2004 - 11:48 #9
mc:> Skal din kommentar fra 19/08-2004 11:37:08 forstås som svar på mit forslag eller bertie's kommentar?
Det jeg mener er.... har du prøvet mit forslag? ;)

Mit svar til dit forslag kaptajn

MC
Avatar billede kaptajnkemo Nybegynder
19. august 2004 - 11:50 #10
ok, jeg indrømmer blankt jeg ikke har forstand på VB.... Tænkte bare lige metoden skulle prøves... "?" operatoren bruges til dette formål i mange andre sprog....
Avatar billede Slettet bruger
19. august 2004 - 11:52 #11
Du kan lave en funktion som du sætter feltet lig med, noget a la



Function SetVaerdi(felt as string) as tinyint
  if ucase(felt) = "TRUE" then
    SetVaerdi = 1
  else
    SetVaerdi=0
  end if
End Function

Og så

check1.value = setVaerdi(rs!feltnavn) kan ikke helt huske det med paranteser så ellers
check1.value = setVaerdi rs!feltnavn
Avatar billede mc.lucifer Praktikant
19. august 2004 - 12:01 #12
Jamen vil det også virke når det er det jeg trækker fra databasen som skal ændre værdi inden det når til div check

sidder og overvejer om jeg ikke bare skal lave min db om. det ville jo gøre det noget lettere

MC
Avatar billede tubber Juniormester
19. august 2004 - 12:05 #13
så vidt jeg ved så kan man godt bruge check1.value = true/false

er du sikker på access ikke står til yes/no og er det en engelsk office du har, kunne du ikke prøve at udskrive din værdi......

lav et textfelt: text1.text = rs!tablenavn
Avatar billede Slettet bruger
19. august 2004 - 12:11 #14
Ja du skal bare bruge
check1.value = setVaerdi rs!feltnavn

hver gang du vil sætte value på et givent felt så skulle det ikke give nogle problemer.
Avatar billede sjh Nybegynder
19. august 2004 - 13:42 #15
mc.lucifer > prøv med IIf() den kan det du skal bruge..

fx.

check1.Value = IIf(rs!Tabelnavn, False, True)
check1.Value = IIf(rs!Tabelnavn, 0, 1)
Avatar billede slumtiger Nybegynder
20. august 2004 - 14:22 #16
False = 0
True = not False, dvs. værdier forskellige fra 0

Prøv rbj's funktion med en lille ændring

private function ConvertValue(byVal value as integer) as boolean
  if value = 0 Then
      ConvertValue = False
  else
      ConvertValue = True
  end if
end function
Avatar billede tubber Juniormester
20. august 2004 - 15:53 #17
Du kan også gøre sådan her :)
Check1.Value = (CInt(True) * -1)
Avatar billede tubber Juniormester
20. august 2004 - 15:55 #18
Fordi True ikke virker i sig selv så er det fordi en checkbox har 2 true værdier, True og Part True
Avatar billede tubber Juniormester
20. august 2004 - 15:58 #19
Check1.Value = (CInt(rs!tablenavn) * -1)
Avatar billede mc.lucifer Praktikant
23. november 2004 - 12:16 #20
Er igang med at rydde op i mine åbne spørgsmål, Derfor er dette lukket, og accepteret, Dvs at alle der har svaret har fået en del af pointene
Sidder du med en følelse af at du ikke har fået hvad du mener du fortjener så skriv endelig så for du nogle flere point

MC
Avatar billede Slettet bruger
23. november 2004 - 20:00 #21
Jeg vil egentlig hellere høre om du fik det til at virke? :-)
Avatar billede mc.lucifer Praktikant
23. november 2004 - 22:09 #22
Det gjorde jeg ikke men mistede også interessen for projektet, Undskyld jeg brugte jeres tid

Sig til hvis i der ikke har fået point vil have det

MC
Avatar billede Slettet bruger
23. november 2004 - 22:36 #23
Nej det er helt i orden.
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