Avatar billede cyberspace Nybegynder
04. december 2003 - 11:45 Der er 36 kommentarer og
2 løsninger

Visual basic/access - gemmefunktion

Jeg har tidligere haft oprette dette spørgsmål
http://www.eksperten.dk/spm/435330

Til spørgsmålet mangler jeg nu af få lavet funktion så jeg kan indtaste 21 (eller flere) numre.

Har fået den til at gemme kunstner og cd navn + nr.
Avatar billede martin_moth Mester
04. december 2003 - 12:26 #1
Jamen så sæt nogle flere indtastningsfelter ind....
Avatar billede cyberspace Nybegynder
04. december 2003 - 13:05 #2
jeg har indtastningsfelt(er) til sangtitel, men jeg er lidt i tvivl om jeg skal lave et indtastnings felt hvor  jeg tilføjer 1 nr. af gangen eller 21 felter hvor alle gemmes på en gang. jeg mangler hjælp til kode/hints til at få det til at funke
Avatar billede martin_moth Mester
04. december 2003 - 13:23 #3
Du må jo først selv finde ud af hvordan du vil modtage de 21 (eller flere) numre. Skal brugeren taste dem ind i 21 (eller flere) textboxe, i en combobox, ...? Men dem troede jeg du havde lavet...

Har du "gjort plads" til numrene i din database - er der et felt til dem der?

Jeg er lidt i tvivl om hvad du spørger om...
Avatar billede drunkensailor Nybegynder
04. december 2003 - 13:27 #4
er der nogen speciel grund til at du absolut vil have 21 felter ind ad gangen - jeg ville foreslå noget helt andet:
1) bed brugeren op at indtaste en sangtitel. brugeren skal herefter vælge om han vil tilføje endnu en titel, eller om han er færdig med sine indtastninger
2) når brugeren har valgt, opdateres tabellen og brugeren kan nu indtaste en ny sangtitel, hvis det var det han ville.

hver gang der trykke på "ny sang title" opdateres en tæller som bruges som ID i din tabel - således kan du tilføje cd'er med mange små numre også, og ikke kun 21 titler.

ved denne fremgangs måde vil du spare plads, idet der ikke vil være "null" felter i tabellen. Håber det kan spore dig ind på en løsning
Avatar billede cyberspace Nybegynder
04. december 2003 - 13:36 #5
drunkensailor>> grunden til de 21 felter er at jeg i de fleste tilfælde har oplevet at der max kan være 21 alm. numre på en skive. men ligemeget.

Jeg tror at jeg vil prøve at bruge/følge dit eksempel.

martinmoth>> det jeg vil er mere præcist at få noget hjælp til at når jeg trykker på en tilføj cdnr/tittel knap så gemmer den cdnr/titlen som jeg skriver i en textbox og tilføjer det til min database (dette skal  gøres indtil alle numre på cd er indtastet/tilføjet i databasen) (skal hænge sammen med denavnet) - håber det blev forståeligt
Avatar billede cyberspace Nybegynder
04. december 2003 - 13:38 #6
denavnet = cdnavnet/cdtitel
Avatar billede cyberspace Nybegynder
04. december 2003 - 14:11 #7
mit felt til indtastning af cdnumre hedder TextcdNummer og commandoknappen hedder  cmd_tilføj_Sang.

I min tabel numre har jeg en felt/kolonne der hedder ID (Autonummerering)
og kolonne der hedder tittel (her indtastes sangnavn/titel)
Jeg har også en kolonne der hedder cdid (dette nummer er cd nummeret (1 = den først intastet cd) alle numre tilhørende den første cd har 1 i cdid kolonnen
Avatar billede martin_moth Mester
04. december 2003 - 21:50 #8
Jeg er forvirret. Prøv lige at vis:

Hvad skal databasen indeholde?

1 CD-titel, 1 kunstner og x sangtitler pr CD, eller?

Og prøv at vis den kode du allerede har til at tilføje CD-titel og knstner...
Avatar billede cyberspace Nybegynder
05. december 2003 - 08:33 #9
Martin_moth>> ok. Som tidligere nævnt min database indeholder 3 tabeller.

1 kunstner med kunstnernavn (kolonne)
2 Album med cdid, Album_navn, Kunstner (kolonner)
3 Numre med Id, tittel, sang nummer, Cdid

Relationerne er (1) kunstnernavn til (2) kunstner. (en til mange)
(2) cdid til (3) cdid (en til mange)

jeg har 2 textboxe kunstner & cd navn + cd nr disse gemmes (tilføj til database) ved tryk på en commandoknap. som det sidste har jeg en textbox til at kunne indtaste cd numre med tilhørende commandoknap tilføj sang (cmd_tilføj_Sang)

Kode - (command2 knappen der gemmer kunstner og cd navn + cd nr)
Private Sub Command2_Click()
Dim SQL As String



SQL = "select * from kunstner where kunstnernavn = '" & TextKunstner.Text & "'"
rs.Open SQL, con, adOpenKeyset

If rs.RecordCount < 1 Then

SQL = "INSERT INTO Kunstner (Kunstnernavn) VALUES ('" & TextKunstner.Text & "')"
con.Execute SQL

MsgBox TextKunstner.Text & " er tilføjet til databasen"

End If


SQL = "INSERT INTO album (Album_navn, Kunstner) VALUES ('" & TextCdNavn.Text & "', '" & TextKunstner.Text & "')"
con.Execute SQL
MsgBox TextCdNavn.Text & TextKunstner.Text & "er tilføjet til databasen!"
rs.Close
Set rs = Nothing

con.Close
TextKunstner = ""
TextCdNavn = ""
'Set con = Nothing
'TextKunstner.Text = ""
End Sub

Private Sub Form_Load()
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset

myString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\VB Projekt\CdDatabase.mdb;Persist Security Info=False"

con.Open myString

End Sub
Avatar billede martin_moth Mester
05. december 2003 - 08:49 #10
Når du så fint kan tilføje data til de andre tabeller, så forstår jeg ikke hvad problemet er i at tilføje data til den sidste tabel. Eller er det bare mig der ikke fatter noget - hvad er problemet?

Tror jeg står af - der er sikkert nogle andre der forstår dit problem bedre end jeg :-)
Avatar billede cyberspace Nybegynder
05. december 2003 - 08:56 #11
jeg skal bruge noget kode, så jeg kan indtaste et cd nummer (i textboxen - textcdnummer) og så trykke på commandoknappen (cmd_tilføj_Sang) og nummeret vil blive gemt i databasen. Dette skal jeg så kunne gøre indtil alle cd numre på skiven er indtastet. (numre skal stadig relatere til cd'en - cd navn + cd nr)
Avatar billede martin_moth Mester
05. december 2003 - 09:03 #12
Ahh - du har sikkert forklaret dig fint, det er bare mig der er tungnem ;o)
Avatar billede cyberspace Nybegynder
05. december 2003 - 09:06 #13
Et af mine problemer er hvordan jeg får den den til at "fatte" at de numre jeg indtaster hører til en bestemt cd og er med kunstneren

(dette er det korte af det lange)
Avatar billede drunkensailor Nybegynder
05. december 2003 - 15:50 #14
har kikket lidt hurtigt på det - det skal nævnes at jeg ikke er en ørn til sql, men har da sådan en rimelig forståelse. Så vidt jeg kan se mangler dine tabeller referencer mellem hinanden - hvorfor det ikke er muligt at finde ud af hvilke rækker i dine tabeller der hører sammen. Jeg vil foreslå en lille ændring i dine tabeller til følgende:


create table KunstnerTabel (
    kunstnerId int primary key not null,
    kunstnerNavn char(30),
    cdID int references CdTabel
)

create table CdTabel (
    cdID primary key not null,
    albumNavn char (30),
    nummerID int references NumreTabel
)

create table NumreTabel (
    nummerID int primary key not null,
    sangTitel char (30),
    sangNummer int
)

Med disse 3 tabeller skulle det være muligt at holde styr på dine data.

til at bakke tabelerne op ville jeg foreslå noget i retningen af følgende - bemærk at koden er asp kode.

dette stå på en indtastnings side

<form method="GET" action="nummerindtastning.asp"><center>
<table>
    <tr><th>sangtitel: </th><td><input name="sangtitel" value="<%=sangtitel%>" size="20"></td></tr>
    <tr><th>sangnummer: </th><td><input name="sangnummer" value="<%=sangnummer%>" size="20"></td></tr>
</table><br>
<input type="Submit" value="confirm"><input type="reset">


følgende står på siden (nummerindtastning.asp) der skal modtage data fra overstående side

<body>

    maxid =conn.Execute("select max(nummerID) from NumreTabel");
    newid = maxid(0)+1;
<center>
<table>
    <tr><th>sang Titel </th><td><%=sangtitel%></td></tr>
    <tr><th>Sang nummer </th><td><%=sangnummer%></td></tr>

</table><br>
</center>

<!--gem værdier i database-->
<%
NumreSQL = "insert into NumreTabel"+"(nummerID,sangTitel,sangNummer)" +"values ("+newid+",'"+sangtitel+"','"+sangnummer+"')";

conn.Execute(NumreSQL);
%>


Hvis der er noget i koden du ikke forstår er du velkommen til at spørge - men forvent ikke svar før starten af næste uge - ide jeg skal til julefrokost hel weekenden...
Avatar billede drunkensailor Nybegynder
05. december 2003 - 15:53 #15
okay en hel del stavefejl sneg sig ind - håber det går alligevel
Avatar billede cyberspace Nybegynder
05. december 2003 - 17:37 #16
drunkensailer>> Jeg  har 3 tabeller (se min kommentar 05/12-2003 08:33:17)

1 - 2 & 3 er de tre tabeller.

Så jeg får hvis ikke brug for dine 3 create kode sætninger?

Checker koden i løbet af weekenden og vender tilbage
Avatar billede cyberspace Nybegynder
05. december 2003 - 17:41 #17
så lige at det var ASP kode er der nogen der kan sige mig om det kan bruges i VisualBAsic 6.0
Avatar billede cyberspace Nybegynder
05. december 2003 - 17:48 #18
har lige hurtigt afprøvet koden, men det ser ikke ud til at den rigtigt kan bruges.

Hvis der er nogen de kan checke og evt. lave foreslaget brugbart gives point for dette.
Avatar billede cyberspace Nybegynder
05. december 2003 - 17:53 #19
drunkensailor>> så vidt jeg kan se er din mening med koden ok men du briger nogle betegnelser som VisualBasic brokker sig over og det er en del af dine betegnelser jeg ikke helt forstår pga. at de er ASP og ikke Visualbasic udtryk/betegnelser.

Nå vender tilbage på et andet tidspunkt
Avatar billede drunkensailor Nybegynder
05. december 2003 - 17:55 #20
Har laver det i asp - idet det er det jeg kender - men selve sql kommandoerne er de samme - det er blot et spørgsmål om hvordan de kaldes fra dit sprog - meget af koden vil du også kunne genkende. nå det var det sidste jeg nåede go' weekend
Avatar billede cyberspace Nybegynder
08. december 2003 - 08:32 #21
drunkensailor>> jeg har stadig problemer med at forstå og bruge dit kode foreslag.
Desuden vil jeg lige høre om det overhoved er nødvendigt at bruge din create table ... kode da jeg i forvejen har 3 tabeller?

de fleste steder hvor du bruger <...> i din kode, har jeg nogle problemer med at forstå - desværre.
Avatar billede cyberspace Nybegynder
08. december 2003 - 09:11 #22
drunkensailor>> jeg bruger overhoved ikke kommandoer af typen <...> og da jeg stortset ikke kender noget til asp så kan jeg ikke helt tide meningen med koden. for jeg er næstent sikker på at det er pga. disse at jeg ikke kan få den kode til at virke.

Hvis har tid og lyst kunne jeg måske maile dig min database så du kan checke om du kan få den til at min manglende del af min gemmefunktion til at virke.
Avatar billede cyberspace Nybegynder
08. december 2003 - 09:12 #23
tide = tyde
Avatar billede martin_moth Mester
08. december 2003 - 09:51 #24
cyberspace: Drop alt det drunkensailor skriver imellem < og > - det er HTML-koder, og har ikke noget med dit problem at gøre - men læs der står mellem <% og %>, for det er VBScript, og den kode kan du bruge...
Avatar billede cyberspace Nybegynder
08. december 2003 - 09:55 #25
martin_moth>> jeg kan da ikke bare tage og bruge den del af koden du uden <...> der skal vel lidt mere kode til?
Avatar billede cyberspace Nybegynder
08. december 2003 - 09:56 #26
jeg kan vel også unvære koden til oprettelse af de 3 tabeller, når jeg nu har 3 tabeller i forvejen?
Avatar billede cyberspace Nybegynder
08. december 2003 - 10:00 #27
martin_moth>> måske kan du evt. fortælle mig lidt mere specifikt hvad af koden jag kan bruge, og hvad jeg kan undvære. For jeg er desværre lidt på barbund, mht. hvormeget af koden jeg kan undlade og hvad der skal tilføjes.
Avatar billede martin_moth Mester
08. december 2003 - 10:08 #28
Jeg kan ikke forstå at du er så meget på bar bund når du allerede selv har lavet noget af programmet, hvor du gemmer data i en database - det er jo det samme du skal gøre en gang til nu.

Jeg står af spørgsmålet, da jeg tror det snarere drejer sig om hvordan du skal designe din database, som drunkensailor påpeger. Og det har jeg ikke forstand på :o)
Avatar billede cyberspace Nybegynder
08. december 2003 - 10:12 #29
nej det drejer sig ikke om design det drejer sig udelukkende om kode/programeringen af funktionen
Avatar billede martin_moth Mester
08. december 2003 - 10:26 #30
Sådan forstår jeg det nu ikke. Du kan jo sagtens selv finde ud af at gemme data i en database!

Problemet er at få data gemt på en sådan måde, at numrene hører til den samme CD osv - altså at tabellerne i databasen hører ordentligt sammen. Og det er et database-design-problem.

Sådan som jeg forstår dit problem, that is.
Avatar billede cyberspace Nybegynder
08. december 2003 - 11:19 #31
martin_moth>> kald mig bare forvirret eller "nybegynder" men jeger altså blevet forviret efter at have kigget på drunkensailors kodeforeslag og ikke helt kan finde ud af hvad jeg skal undlad og tilføje i stedet for. jeg prøvede at lave koden om til noget jeg kunne bruge, men det blev markeret rødt som fejl. jeg er kun nået hertil uden at få fejl.

Dim SQL As String
SQL = "Insert into Numre (tittel) VALUES ('" & Text_sang_titel.Text & "')"
Avatar billede martin_moth Mester
08. december 2003 - 11:29 #32
Så mangler du bare at fyre SQL'en af sted med conn.Execute(NumreSQL)
Forudsat, naturligvis, at du har oprettet conn, men da du jo allerede kan gemme andre data, regner jeg med at du har oprettet den allerede...
Avatar billede cyberspace Nybegynder
08. december 2003 - 11:38 #33
Jeg roder også med dette men det funker ikke rigtigt. WHATS WRONG!? (det er vel denne eller dele af dette der får oplysninger til at hænge sammen mellem de 3 tabeller?)

maxid =conn.Execute("select max(nummerID) from numretabel");
Newid = maxid (0)+1;

NumreSQL = "Insert into numreTabel" + "(nummerID, tittel, sang nummer)" + "values"
("+newid+",'"tittel+"','"+sang nummer+"')";
con.Execute (numreSQL);
Avatar billede martin_moth Mester
08. december 2003 - 11:51 #34
Siden hvornår skal man bruge ; efter hver linie i VB6?
Hvad er Newis?
Hvad er maxid()?
Hvorfor + foran dine variabelnavne?
Har du oprettet conn?
Avatar billede cyberspace Nybegynder
08. december 2003 - 12:06 #35
Ja jeg har oprette conn.

Min fejl der skal selvølgelig ikke ; efter hver sætning. har også slettet +
du spørger hvad newid og maxid er  (uden at være sikker tror jeg det har noget at gøre med det idnummer der henviser til cd'en)
Avatar billede martin_moth Mester
08. december 2003 - 12:23 #36
Hvordan forventer du at noget virker, når du ikke ved havd de variabler du bruger indeholder?

Det jeg har svært ved at forstå er at du har lavet et program, der kan gemme data i en database. Nu vil du så gemme lidt mere data, og så er det pludselig et problem. Jeg kan forstå hvis problemet er designet af databasen - som jeg har været inde på - men skal du blot gemme i en database, så brug den kode du allerede har og ret den til...

Jeg tror at drunkensailor skal overtage, eller en anden. Hvis du føler at spørgsmålet er kørt af sporet, så prøv at luk det og opret et nyt, hvor du kort og præcist skriver hvad der er dit problem. Så skal du nok få et brugbart svar. Held og lykke :o)
Avatar billede cyberspace Nybegynder
08. december 2003 - 13:02 #37
Martin_moth>> nu har jeg lige kigget lidt mere grundigt på det og til alt helt fik jeg det faktisk til af funke 99% ENDELIG!

Så nu er det point tid.
martin_moth>> du har også fortjænt nogle point, så skriv lige svar

Takker for alt hjælpen/foreslag
Avatar billede martin_moth Mester
08. december 2003 - 13:18 #38
Ok - jeg havde nu ikke meget at byde på...
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