Aiuto realizzazione ricerca db biblioteca

venerdì 06 febbraio 2009 - 14.03

miomiomio Profilo | Junior Member

ciao a tutti.
Avrei bisogno urgente del vostro aiuto.

so di chiedere molto ma avrei bisogno di qualcuno che mi dedica un po' di tempo.

La biblioteca della mia scuola ha un database access 2000 nel quale sono stati inseriti circa 3000 volumi tramite LuBook, un programmino Free semplice, adesso è sorta la necessità di consultare questo database tramite web, ma dato che il database per me è complesso vorrei che qualcuno desse un'occhiata al database vuoto per vedere la struttura.(se volete anche quello pieno)

il programma purtroppo utilizza solo questo database non le versioni successive quindi dalo che è circa a metà, verrà continuato l'inserimento tramite LuBook e quindi anche la ricerca dovrebbe utilizzare questo database.

Se però ci fosse il modo di inserire i titoli tramite web il programmino potrebbe anche essere lasciato e il database convertito in un formato magari meno obsoleto e più versatile.

insomma dite voi.

chi può aiutarci?

grazie

Jeremy Profilo | Guru

Non ho capito molto bene bene bene.....
Cosa vorresti sapere??Se esiste il sistema per farlo?
Il programmino che stai utilizzando attualmente, lavora in locale o già in remoto?

Facci sapere...
Ciao.

miomiomio Profilo | Junior Member

il programma lavora in locale, credo sia scritto in VB o C.

utilizza un database access 2000 e registra tutti i dati di un libro.
sono varie tabelle correlate e vorrei sapere come fare per poter unire questi dati con delle query web.

allego il database così magari vedete la struttura

vorrei che tramite una pagina possibilmente asp (l'unico linguaggio che riesco un po' a capire) fosse possibile fare delle ricerche in base ad autore, titolo editore e restituire i risultati.
grazie

Jeremy Profilo | Guru

Quindi tu vorresti spostare il tuo database su hosting e fare in modo di poter interrogare/aggiornare il db da una pagina .aspx??
Questo programmino LuBook sarebbe quindi poi abbandonato o dovresti continuare ad utilizzarlo....nel senso....è predisposto per interfacciarsi con il db in remoto, o devi creare poi un'altra applicazione simile che faccia lo stesso lavoro???

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

potrei anche lasciarlo il programma.
in realtà, visto che non è indispensabile fare molte modifiche al database, potrebbe anche bastare la sola ricerca dal web
e la modifica in locale. ogni tanto si carica sul server hosting il database aggiornato.
è necessario aspx o si può fare anche con asp?

il programma non si interfaccia col web.

grazie

Jeremy Profilo | Guru

Ora ho capito.
>in realtà, visto che non è indispensabile fare molte modifiche al database, potrebbe anche bastare la sola ricerca dal web
Non credo ci sia bisogno di fare alcuna modifica sul database.
>è necessario aspx o si può fare anche con asp?
Visto che hai conoscenze di asp puoi farlo con asp......se poi hai bisogno di qualche info...chiedi pure.

Comunque stasera do un occhio alla struttura del database e poi ti dico....

Ciao.


miomiomio Profilo | Junior Member

ti ringrazio.

ho fatto una ricerca per titolo, quella sono in gradoo di farla perche è tutto nella tabella biblio.

Il broblema sorge quando devo ricercare per autore e far mostrare autore titolo anno editore ecc.
infatti l'autore e l'editore sono in tabelle distinte collegate tra loro tramite l'id del titolo.

non so come si fa ad accorpare il tutto.

la dritta credo che per adesso mi servirebbe in questo senso.
se poi hai tempo di farmi una bozza tanto meglio!!
GRAZIE

Jeremy Profilo | Guru

>la dritta credo che per adesso mi servirebbe in questo senso.
>se poi hai tempo di farmi una bozza tanto meglio!!
>GRAZIE

Ok...allora posta il codice che usi al momento per fare quello che già fai....così ti si spiega come fare il resto.

Ciao....

miomiomio Profilo | Junior Member

questo è il codice
ho fatto un form nel quale scrivo il titolo e premendo cerca, sotto ottengo tutti i risultati...si è brutto, mi piacerebbe qualcosa di più elaborato.

grazie

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Jeremy Profilo | Guru

Fammi capire solo una cosa....la struttura del Db....l'hai pensata tu, o è nata così?
Si può modificare o deve rimanere così come è?

Se puoi rispondi a queste due domande!!

Scusa se continuo a farti più domande che altro, ma faccio un pò fatica a comprendere se sto benedetto LuBook è di tua creazione o se è un programma free opensource trovato in rete al quale tu puoi comunque apportare delle modifiche.

Ti confermo che, comunque, andrebbero apportate delle modifiche alla struttura delle tabelle....quindi se è possibile fare queste modifiche diventa tutto molto più semplice.
Altrimenti faremo di conseguenza....

Facci sapere...
Ciao.

miomiomio Profilo | Junior Member

rispondo volentieri a tutte le domande, spero solo di cavarci le gambe!

il programma (e database annesso) l'ho trovato così. è un freeware trovato qualche anno fa ed utilizzato per catalogare per ora poco meno di 3000 volumi.

per quanto mi riguarda sia il database che il programma può essere messo da parte a patto che non si debbano riscrivere tutti e 3000 i volumi!

inoltre se si abbandona il programmino, dovrebbe esserci comunque la possibilità di continuare ad inserire i volumi, continuare quindi la catalogazione. anche via web andrebbe benissimo!

spero di averti detto tutto. per il momento ti continuo a ringraziare!
ciao!

Jeremy Profilo | Guru

Comincio a capire sempre di più!

Allora.... per quanto riguarda il trasferimento dei dati da un database ad un altro, strutturato in modo diverso e più corretto per la visualizzazione dei dati come tu hai indicato, non ci sarebbero problemi, si potrebbe creare un'automazione che lo faccia e comunque andrebbe fatto una sola volta.
Dopo di che, se tu volessi abbandonare, sto benedetto LuBook, basterebbe avere un'altra pagina asp che si occupi di inserire i dati nel nuovo database.

ma sei tu che devi decidere se usare una strada o l'altra .... nel senso che ..... sei pronto a rifare sto benedetto LuBook da capo?
non ho idea delle funzioni che possa avere sto benedetto LuBook ma credo che rifarlo da capo non sia uno scherzo.....ne varrebbe la pena?

Attenzione...il mio consiglio non è di rifarlo....ho solo chiesto informazioni per capire in che modo potrebbe essere possibile agire per ottenere quello che ti serve.
Nel senso che...se fosse opensource sarebbe possibile quindi apportare delle modifiche sull'indirizzamento dei dati verso i campi delle tabelle....altrimenti NO.

Facci sapere..
Ciao.

miomiomio Profilo | Junior Member

si sono io che decido.
a me andrebbe benissimo, solo che non so fare una mazza!
non so fare l'automazione per il trasferimento, non so creare la pagina di ricerca ne quella di inserimento...te lo dico perchèimplicitamente ti sto chiedendo un grosso favore!
se vuoi da qui ti puoi scaricare il programmino e vedere come funziona
http://www.pipuntoro.it/download/LuBook.zip

Jeremy Profilo | Guru

Prova a sostituire la tua stringa query con questa:

"SELECT AUT.Nome,Titolo,Genere,Argomento,Anno FROM Biblio,(SELECT Id_Biblio,Id_Autore FROM AutBiblio WHERE Id_Autore=?) AS BIB,(SELECT Autore.Nome FROM Autore WHERE Autore.Id_Autore=?) AS AUT WHERE Biblio.Id=BIB.Id_Biblio"

e, ovviamente aggiungi il secondo parametro(ma con valore uguale al primo).

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

ho messo questo codice
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Recordset1_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>biblio</title>
</head>

<body>
<table width="619" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2">Ricerca per titolo
<form id="form1" name="form1" method="post" action="">
<label>
<input name="titolo" type="text" id="titolo" />
</label>
<label>
<input type="submit" name="button" id="button" value="Invia" />
</label>
titolo
<label>
<input type="radio" name="radio" id="titolo2" value="titolo" />
</label>
anno
<label>
<input type="radio" name="radio" id="anno" value="anno" />
</label>
</form></td>
</tr>
<%
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
%>
<tr>
<td><%=(Recordset1.Fields.Item("Titolo").Value)%></td>
<td><%=(Recordset1.Fields.Item("Anno").Value)%> <%=(Recordset1.Fields.Item("Edizione").Value)%></td>
</tr>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Recordset1.MoveNext()
Wend
%>
</table>
<% If Recordset1.EOF And Recordset1.BOF Then %>
<p>nessun risultato</p>
<% End If ' end Recordset1.EOF And Recordset1.BOF %>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
[/code]
ma mi restituisce un errore
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

No value given for one or more required parameters.

/biblio.asp, line 22
e sarebbe questa
Set Recordset1 = Recordset1_cmd.Execute

Jeremy Profilo | Guru

Devi aggiungere un'altro parametro....
Tieni presente che questa query ti dovrebbe permettere di visualizzare le informazioni in base All'IdAutore.....quindi per fare una prova scrivi questo

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Se funziona ..possiamo strutturarla per come vuoi tu le informazioni.

Facci sapere...
Ciao

miomiomio Profilo | Junior Member


mi mostra il form ma mi dà errore qui

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/biblio.asp, line 52
<td><%=(Recordset1.Fields.Item("Titolo").Value)%></td>


ho tolto l'area ripetuta. ho provato a scrivere autore al posto di titolo ma niente...
grazie per il tempo che mi dedichi

Jeremy Profilo | Guru

Prova così:
<td><%=(Recordset1.Fields("Titolo").Value)%></td>

io purtroppo non ho modo di provare.

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

mi spiace...stesso errore

miomiomio Profilo | Junior Member

adesso funziona!!
sei un grandeeeeeeeeeeeeee!!!!!!!!!!
ho provato a scrivere 1346 come id autore e mi ha mostrato i titoli corrispondenti!
adesso cosa devo fare per l'autore e l'editore?
posto il codice della pagina funzionante
GRAZIE!
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Jeremy Profilo | Guru

Spiega bene i campi che vuoi ottenere ed in base a quale parametri....
Il risultato si ottiene semplicemente costruendo la query nel modo corretto.

Il resto del codice, dopo, se vuoi lo mettiamo a posto.

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

io vorrei un form con dei radiobutton con i quali scegliere se ricercare titolo autore editore. e mostrare i risultati titolo, autore editore anno genere luogo di stampa posizione

questo per quanto riguarda la visualizzazione dei risultati.

mentre per un inserimento dei titoli della biblioteca servirebbero tutti i campi.

troppo elaborato?

Jeremy Profilo | Guru

Ok...dammi tempo stasera e vedo di metter giù qualcosa.....
Ciao

miomiomio Profilo | Junior Member

ok.
grazie di cuoreeeeeeee!!!

Jeremy Profilo | Guru

Comincia a provare con queste:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Purtroppo la struttura del DB fà schifo...quindi è un casino(almeno per me) creare delle query che possano ottenere quello che vuoi tu.

Comunque...queste le ho provate e funzionano...

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

ma allora non si può cambiare il database?

Jeremy Profilo | Guru

Se cambi il Database .... come fa il tuo benedetto LuBook a memorizzare i dati come li memorizzava prima???
Lui conosce la struttura del database per come è fatta adesso!!!
O rifai tutto, oppure dobbiamo dannare sulle query!!!

Se invece vuoi gestire tutto dalla tua pagina asp .... allora io ti potrei scrivere la nuova struttura del database e le query di inserimento,modifica e selezione e tu fai tutto il resto.

Facci sapere...
Ciao




miomiomio Profilo | Junior Member

siiiiiiiiiiiiiii!
saluto il lubook e faccio tutto da asp!

a me andrebbe benissimo!

Jeremy Profilo | Guru

Questa potrebbe essere una struttura che va bene....si potrebbe aggiungere una tabella "Generi" ma ci andiamo a complicare la vita.

Per quanto riguarda le query di selezione:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

scusa il ritardo ma ho avuto problemi con dreamweaver.

ho messo questo codice

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ma mi dà questo errore

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver]COUNT field incorrect

/biblio.asp, line 25
la riga 25 è:
Set Recordset1 = Recordset1_cmd.Execute

cosa sbaglio?
grazieeee

Jeremy Profilo | Guru

Hai cambiato la stringa di connessione in modo tale che punti al nuova database????

Prova questa:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= |DataDirectory|\Database.mdb;"

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

si, il database l'ho caricato e l'ho fatto puntare con questa connessione.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

con la tua
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

mi da questo un errore diverso ma mi segnala la stessa riga
Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters.

/biblio.asp, line 25

Jeremy Profilo | Guru

E il parametro?Non lo valorizzi?

Recordset1_cmd.Parameters.Append Recordset1_cmd.CreateParameter("param1", 200, 1, 250, TUOVALORE )

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

che stupid!

adesso ovviamente funziona!
ma i tre select in base al titolo autore editore c'è un modo per metterli tutti nella stessa pagina? magari con un case1 case 2 abbinati ai radiobutton?

ma soprattutto per trasferire tutti i dati dal vecchio al nuovo database come si fa?

GRAZIEGRAZIE

Jeremy Profilo | Guru

>ma i tre select in base al titolo autore editore c'è un modo
>per metterli tutti nella stessa pagina?
SI
>magari con un case1 case2 abbinati ai radiobutton?
Esatto

>ma soprattutto per trasferire tutti i dati dal vecchio al nuovo
>database come si fa?
Per fare questo dammi ancora un pò di tempo...cercherò di fare in modo che il tutto possa avvenire in automatico.

Ciao...

miomiomio Profilo | Junior Member

ok io intanto provo a fare il select case.


sei un grandeee!

Jeremy Profilo | Guru

Prova ad installare questo programmino fatto da me...per installarlo serve il .NET framework 3.5 e windows installer 3.1... se non li hai dovrebbe scaricarteli automaticamente dal sito del produttore....(quindi rimani collegato ad internet)
Una volta installato, fai una copia del tuo database e la metti al sicuro(così non combiniamo guai).
Poi basta che selezioni nel database di origine il tuo database, nel database di destinazione il mio db e premi i pulsanti in sequenza...poi vedi quello che succede.

Se ci sono problemi...fatti sentire.

Ciao..

Jeremy Profilo | Guru

Se non lo hai ancora installato ... aspetta che ti mando una versione aggiornata...perchè mi sono accorto di un errore....satsera lo sistemo e te lo mando..
Ciao

Jeremy Profilo | Guru

Questo dovrebbe funzionare come si deve...

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

ciao.
scusami ma sono tornato solo adesso.

ti ringrazio immediatamente dello sforzo.

mi dà un errore dopo aver preputo il secondo tasto
Eccezione non gestita nell'applicazione. Fare clic su Continua per ignorare l'errore e tentare di proseguire. Fare clic su Esci per arrestare l'applicazione immediatamente.

Una colonna denominata 'IDAutore' appartiene già a questa DataTable.

questi sono i dettagli che mostra
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Jeremy Profilo | Guru

Secondo me hai sbagliato a selezionare i db.....
In quello di origine devi selezionare il tuo.....(vuoto.mdb)
In quello di destinazione devi selezionare il mio ..... (Database.mdb)

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

ahh quello vuoto?
io ho inserito lo stesso ma con dentro tutti idati

EDIT: se lo faccio con quello vuoto funziona

Jeremy Profilo | Guru

No.....mi sono spiegato male io.....
In quello di origine devi selezionare il Database con la struttura di quello vuoto che mi hai mandato tu ..... ma con i dati.
Ricordati di usare una copia(così non facciamo disastri)
In quello di origine devi selezionare il Database con la struttura che ho fatto io ...... vuoto.

miomiomio Profilo | Junior Member

scusa ti ho mandato l'errore sbagliato.

la prima volta che lancio il trasferimento mi dà un altro errore. quello di prima me l'ha dato al secondo tentativo con gli stessi database.

l'errore che mi dà sembra dato dal tipo diverso di dati.

Eccezione non gestita nell'applicazione. Fare clic su Continua per ignorare l'errore e tentare di proseguire. Fare clic su Esci per arrestare l'applicazione immediatamente.
Cast non valido dal tipo 'DBNull' al tipo 'String'.


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Jeremy Profilo | Guru

Prova a copiare una ventina di righe in un db vuoto e a mandarmelo così che io possa fare il debug ..... perchè a me funziona.
Se vuoi puoi mandarmelo via e-mail
tiziano [at] mtimpianti.net

Ciao...

miomiomio Profilo | Junior Member

ti ho mandato la mail!

Jeremy Profilo | Guru

Questa versione funziona di sicuro(l'ho provata due volte) ..... fallo una sola volta altrimenti rovini il database di destinazione.
L'operazione è un pò lunga
Controlla che con le SELECT i dati siano congruenti al vecchio Db(mica che ho messo i dati in campi diversi)

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

MITICOOOOOOO

trasferimento riuscito.
adesso provo il database con la ricerca e ti faccio sapere!!

miomiomio Profilo | Junior Member

allora la ricerca tramite asp funziona solo che nel trasferimento sono saltati gli id e ai titoli non corrispondono i giusti editori ed autori.
mi sa che sia un gran casino questo...spero di sbagliarmi.

Jeremy Profilo | Guru

No tranquillo....è solo che ho interpretato male la struttura del tuo vecchio Db .... dammi tempo ancora domani e ti mando la versione che fa la giusta conversione.

Ciao...

miomiomio Profilo | Junior Member

da non crederci sei il mio salvatore!!!
anche domani, come oggi, sono incasinato e non credo di potermi connettere fino a sera.
non è che me ne voglio lavare le mani ma ho 2 giorni da paura scusami
e soprattutto grazieeeeeeeeeeeeeee

Jeremy Profilo | Guru

Ti ho mandato tutto via e-mail.

Facci sapere...
Ciao.

miomiomio Profilo | Junior Member

assolutamente PER FET TO!!!!!!!!!!!!!!!!!!!!!

funziona alla grande!!! il tuo programmino è un portento!

ho notato che quando faccio una ricerca mi restituisce il risultato solo se scrivo interamente il titolo autore o editore.

è possibile fare in modo di ottenere tutti i risultati da un titolo o autorte parziale?
esempio. se cercassi i promessi sposi

posso ricevere i risultati scrivendo solo sposi o promessi? e far venire fuori tutti i titoli che contencono a inizio, mezzo o fine quel termine?

Jeremy Profilo | Guru

Si.... basta usare il carattere Jolly "%" prime e dopo il valore della ricerca quindi diventerà:

[code]SELECT * FROM Biblioteca WHERE Titolo LIKE '%sposi%'
[code]
Facci sapere...
Ciao...

miomiomio Profilo | Junior Member

in questa query ci scrivo così?

CASE "valore_1" 'Questa è per la ricerca in base all'Autore
Set Recordset1_cmd = Server.CreateObject ("ADODB.Command")
Recordset1_cmd.ActiveConnection = MM_bibl_STRING
Recordset1_cmd.CommandText = "SELECT Titolo, Posizione, Genere, Stato, Autore, Anno, Editori.Editore FROM " & _
"(Autori INNER JOIN Biblioteca ON Autori.IdAutore = Biblioteca.IdAutore) " & _
"INNER JOIN Editori ON Biblioteca.IdEditore = Editori.IdEditore " & _
"WHERE Autori.Autore=? LIKE '%' ? '%' "

Jeremy Profilo | Guru

>"WHERE Autori.Autore=? LIKE '%' ? '%' "
NO.....questo rimane normale per come era prima.....
>"WHERE Autori.Autore LIKE ?
è nel valore del parametro che devi aggiungere il carattere jolly.

Ciao....

miomiomio Profilo | Junior Member

il mio parametro è Recordset1__MMColParam

ma se metto Recordset1__MMColParam = "'%'" & Request.Form("Titolo") & "'%'"

non trova più niente

uffa come sono duro

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Jeremy Profilo | Guru

Ci sono degli apici di troppo......
copia e incolla questa parte di codice
"%" & Request.Form("Titolo") & "%"

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

adesso è semplicemente perfetto.

ma quindi l'inserimento lo faccio direttamente da lubook e poi converto il database con il tuo programmino?

Jeremy Profilo | Guru

No....direi di no....fossi in te andrei avanti solo con la pagina .asp.
Ti/Ci manca solo la query di insert,delete,update.
Poi devi aggiungere quante textbox ti servono per valorizzare i campi del database.....fossi in te andrei avanti in questo senso.

Facci sapere...
Ciao

miomiomio Profilo | Junior Member

vedrò se ci riesco.
ma devo utilizzare le stesso codice select?

io non ho mai fatto un insert!

miomiomio Profilo | Junior Member

ciao.
senti io non so fare l'inserimento. l'update non ho neanche provato.
se quando hai tempo puoi darmi una mano mi faresti un piacerone!

Jeremy Profilo | Guru

Ciao Federico
Dammi tempo stasera e vedo di metterti giù le INSERT.

>l'update non ho neanche provato.
Questo non mi piace tanto......io una mano te la do volentieri(e penso di averlo dimostrato),mi sono pure divertito.....ma mi sarebbe piaciuto che tu avessi fatto qualche ricerca riguardo la stesura delle query.
Anche perchè, non ti conviene prendere per oro colato tutto quello che ti scrivo io.....magari ci sono anche tecniche più corrette per la gestione dei dati nelle tabelle.
Insomma...quello che voglio dirti.....prendi le mie indicazioni come spunto per fare qualche ricerca di approfondimento sull'argomento!!

Comunque, grazie per aver accettato il thread.

A stasera
Ciao


miomiomio Profilo | Junior Member

ehe
sto seguendo una guida asp!
ho deciso di imparalo meglio ma gli insert con le tabelle collegate non l'ho ancora fatto.

hai perfettamente ragione. ma non è che non ho provato perche non ho voglia ma perche non so come fare con quegli id che devono essere collegati.
insomma continuo a guardare in rete comunque!!

grazie!

Jeremy Profilo | Guru

Ciao Federico

Questa è la query di INSERT
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questa è la query di UPDATE dove IdLibro è uguale a ?
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questa è la query di DELETE IdLibro è uguale a ?
"DELETE FROM Biblioteca WHERE IdLibro=?

Per le tabelle degli Autori e degli Editori dovresti riuscirci sulla base di quanto ti ho indicato in questo post.
Se hai bisogno di aiuto, comunque, facci sapere...
Ciao


miomiomio Profilo | Junior Member

ciao.
allora ho fatto l'aggiorna.
l'unica cosa come ti avevo accennato non so come fare con gli id degli autori e degli editori.

allora ho pensato di fare così.
(per il momento l'ho fatto solo con gli autori perche anche con gli ditori non va.)

ho fatto la query di update della tabella Biblioteca e questo funziona (aggiorna.asp

dato che non posso sempre guardare l'id dell'autore ho fatto un'altra query (autori.asp) che prende tutti gli autori, li raggruppa (ho trovato la comodissima funzione group) e associa ad ogni id l'autore.


"SELECT Autori.IdAutore, Biblioteca.IdAutore, Autori.Autore FROM Autori INNER JOIN Biblioteca ON Autori.IdAutore = Biblioteca.IdAutore GROUP BY Autori.IdAutore, Biblioteca.IdAutore, Autori.Autore ORDER BY Autori.Autore;"

e in questo modo funziona.

l'ho messo in un menu con un repeat e via.

solo che mi ritrovo nella pagina aggiorna con:
"UPDATE Biblioteca SET Titolo=?,Posizione=?,Genere=?,Argomento=?,LuogoStampa=?,Anno=?,IdEditore=?,IdAutore=?," & _
"DataAcquisto=?,CostoE=?,InseritoIn=?,Periodico=?,AnnataNum=?,[Note]=?,PosizioneAttuale=?,CodiceBiblioteca=?,PosX=?,PosY=?," & _
"Stato=?,NumPag=? WHERE IdLibro=?"




questo (per mostrare i campi con i dati già inseriti da modificare)
"SELECT * FROM Biblioteca WHERE IdLibro = ? ORDER BY Titolo ASC"


questo (per l'elenco degli autori e rispettivi id)
"SELECT Autori.IdAutore, Biblioteca.IdAutore, Autori.Autore FROM Autori INNER JOIN Biblioteca ON Autori.IdAutore = Biblioteca.IdAutore GROUP BY Autori.IdAutore, Biblioteca.IdAutore, Autori.Autore ORDER BY Autori.Autore;"



e teoricamente un'altro per gli editori.


mi sembrano un po' troppi.

sto sbagliando in partenza vero?


Jeremy Profilo | Guru

Ciao Federico

Allora....provo a fare un elenco dei passaggi che io seguirei per arrivare ad avere una pagina di aggiornamento delle tabelle.

All'apertura della pagina carichi i dati delle tre tabelle in tre recordset diversi.
Valorizzi tutte le textbox con i dati da salvare
Alla validazione del textbox dove scrivi l'autore, controlli, nel recordset precedentemente valorizzato, se esiste il nome dell'autore.
Se si....prelevi il suo Id e lo memorizzi in qualche variabile che, successivamente valorizzerà, il parametro IdAutore della query

Se no.......
1°SOLUZIONE .....
mostri un messaggio "L'autore AUTORE Non è presente in archivio, Si vuole creare un nuovo autore?
Se si ..... chiederai di inserire i dati dell'autore ..... li salverai nella tabella autore e, successivamente ricaricherai il recordset con tutti gli autori.

2°SOLUZIONE .....
Recuperi l'Id più alto presente nella tabella Autori(magari con SELECT MAX(IdAutore) FROM Autori...oppure leggendo gli IdAutore del recordset), gli aggiungi uno e lo memorizzi in una varibile "NuovoId"
Al momento del salvataggio.....salvi prima il nuovo autore nella tabella Autori che, avendo il campo Id di tipo contatore, assegnerà l'Id del nuovo autore un numero successivo all'ultimo presente.....dopo salvi i dati nella tabella Biblioteca e, nel campo IdAutore, ci metti il numero "NuovoId".

Comincia a vedere se da questo ragionamento viene fuori qualcosa....altrimenti fatti sentire.
Ciao


miomiomio Profilo | Junior Member

ok
grazie!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5