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
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?
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
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
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
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
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 :-)
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)
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.
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...
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.
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
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.
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.
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...
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.
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)
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.
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 & "')"
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...
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);
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)
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)
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.