18 messaggi dal 27 maggio 2013
Salve, ho un problemino che non riesco a risolvere da sola!

Ho dei campi in un db vuoti.

Quando li richiamo con sql vorrei in tali campi inserire un carattere per avere un array sempre della stessa lunghezza.

Come posso fare?

Grazie in anticipo
Besy
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
perdonami, penso di non aver capito bene. La tua query SQL, per qualche motivo, non estrae quei record che hanno il campo vuoto?

Il fatto che un campo sia vuoto (o null?) non dovrebbe essere un fattore discrimante per il numero di record restituiti dalla query. A meno che, ovviamente, non sia una condizione che hai inserito tu stessa nella clausola WHERE.

besy ha scritto:

per avere un array sempre della stessa lunghezza.

Non ho capito a quale array ti riferisci. Stai forse concatenando tutti i valori dei campi uno di seguito all'altro? Potresti cambiare la tua SELECT così, per assicurarti che anche i campi vuoti contengano un carattere.
SELECT CASE WHEN COALESCE(nomecampo, '') = '' THEN 'x' ELSE nomecampo END FROM tabella


ciao,
Moreno

Enjoy learning and just keep making
18 messaggi dal 27 maggio 2013
Grazie per la risposta, scusa la poca chiarezza, sono i miei primi interventi nel forum.
Il problema è questo: ho caricato in un db i nominativi di squadre di calcio e il rispettivo logo. Non ho i loghi di tutte le società e quindi il campo relativo è vuoto.

Per generare i calendari seleziono le società e i relativo logo per trasportarlo in una tabella calendario. Carico tutto in un array. Funziona tutto ok tranne se manca il logo dell'ultima società.

La for i=0 to Ubound(...) mi va in errore perché non trova nessun valore.

Ho provato, prima di fare il ciclo for con

If sb(i,j)="" then

sb(i,j)="*"

ma non lo carica, rimane vuoto.

Ripeto solo se è l'ultimo campo vuoto.

Grazie, comunque!!
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, figurati, nessun problema :)

besy ha scritto:
Carico tutto in un array.

Ok, avrei bisogno di vedere il pezzo di codice che usi per caricare nell'array i dati del Recordset. Immagino che il problema sia lì perché se dal database ti arrivano 18 records, allora anche nell'array dovranno essere presenti 18 elementi. Se ce ne sono di meno, allora c'è stato un problema durante la copia.

Posta anche la tua query SQL, potrebbe essere utile a risolvere il problema. Che database usi?

ciao,
Moreno

Enjoy learning and just keep making
18 messaggi dal 27 maggio 2013
Il db che utilizzo è access 2003


Riporto parte del listato
---

Selezione le squadre di un campionato



sql= "SELECT matricola, societa, pieno, logo FROM logo WHERE "&giron&campionati&"='*' order by societa ASC"

rs.open sql,conn

sb=rs.GetRows()

rs.close

--------

for i=0 to k-1

%>

<option value="<%=sb(0,i) & ", " & sb(1,i) & ", " & sb(2,i) & ", " & sb(3,i)%>"><%=sb(1,i)%></option>

<%
next

%>



Li inserisco nella tabella con il seguente codice

squadra=Trim(request.form("squadra"))


matr= Split(squadra, ", ")
campo=Trim(request.form("campo"))
codice= Split(campo, ", ")

for i=0 to 4*(k-1) step+4

if matr(i)="" then
%>
<script language="JavaScript" type="text/javascript">
alert('Inserire le <%=k%> squadre.');
history.go(-1);

</script>
<%

end if

next

Set conn=Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/"&db&".mdb")
j=0
for i=0 to 4*(k-1) step+4

sql="INSERT INTO squadre"&giron&campionati & " (conta,matricola,societa,logo,nomelogo,campo) " & _
"VALUES ('" & j+1 & "','" & matr(i) & "','" & matr(i+1) & "','" & matr(i+2) & "','" & matr(i+3) & "','" & codice(j) & "')"
conn.execute sql

j=j+1

next
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
ti ringrazio per il codice. Anche se è solo una parte ci permette di andare avanti.

Sono un po' confuso perché vedo che l'inserimento avviene in una tabella chiamata "squadre"&giron&campionati, però poi le informazioni vengono lette da una tabella chiamata logo.
SELECT matricola, societa, pieno, logo FROM logo

E' corretto?
Se non si tratta di un errore e sto interpretando bene, tu inserisci alcune informazioni sulle squadre nella tabella squadre, mentre poi, se e quando si carica un logo lo inserisci nell'altra tabella logo (?)

In questo caso potresti modificare la SELECT in modo che diventi una LEFT JOIN tra le tabelle squadre e logo. In questo modo ti assicuri che verranno restituiti tanti records quante sono le squadre, anche se non hanno un logo.

Se ho sbagliato interpretazione, nel frattempo prova a leggere i dati direttamente dal Recordset, anziché usare GetRows. Qui trovi un esempio:
http://www.w3schools.com/ado/showasp.asp?filename=demo_display1

ciao,
Moreno.
Modificato da BrightSoul il 20 settembre 2013 00.17 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.