Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Αλλού παίζει, αλλού δε...παίζει

Îåêßíçóå áðü ôï ìÝëïò epp1123. Τελευταία δημοσίευση από το μέλος epp1123 στις 05-06-2008, 16:09. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-06-2008, 14:31 42683

    Αλλού παίζει, αλλού δε...παίζει

    Καλησπέρα. Νομίζω ότι το μηχανάκι έχει βάλει σκοπό να με τρελάνει. Ο ίδιος κώδικας σε τρεις σελίδες τρέχει, στην τέταρτη αρνείται. Μου βγάζει ένα Object reference not set to an instance of an object (ενημερωτικά, ξέρω τι είναι αυτό το σφάλμα), και το ανέκδοτο είναι πως η μεταβλητή και είναι δηλωμένη, και πως παίρνει την τιμή κανονικά και πως ο ίδιος κώδικας έχει τρέξει σε άλλες τρεις σελίδες.

    Αρχικά αναρωτιέμαι εάν έχετε αντιμετωπίσει ποτέ τέτοιο πρόβλημα. Παρακάτω θα σας βάλω και τον κώδικα, μήπως και δείτε κάτι που δεν βλέπω εγώ εδώ και τρεις μέρες.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     'Ανέβασμα Λογοτύπου του Προμηθευτή στην Επεξεργασία του Προμηθευτή
    Protected Sub SuppliersLogoUploadButtonEditItemTemplate_Click(ByVal sender As Object, ByVal e As System.EventArgs)

    'Ορισμός μεταβλητών για το ανέβασμα του αρχείου

    Dim TempSuppliersLogoFileUploadEditItemTemplate As New FileUpload <--- Η δήλωση του
    Dim TempResultLabelEditItemTemplate As New Label
    Dim ClientSideFileNameEditItemTemplate As String
    Dim ServerSideFilePathEditItemTemplate As String
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    Dim PromptUpdate As Integer

    'Βρίσκουμε τα control για το ανέβασμα του αρχείου
    TempSuppliersLogoFileUploadEditItemTemplate = Suppliersform.FindControl("FileUpload1") <-- Η εύρεση του control από το FormView
    TempResultLabelEditItemTemplate = Suppliersform.FindControl("SuppliersLogoUploadStatusLabelEditItemTemplate")
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    'Ορίζουμε το path του server
    ServerSideFilePathEditItemTemplate = Server.MapPath("../SuppliersLogos/")
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    'Εκίννηση διαδικασίας ανεβάσματος αρχείου
    If TempSuppliersLogoFileUploadEditItemTemplate.HasFile Then <------Εδώ μου βγάζει το σφάλμα


    'Παίρνουμε το όνομα του αρχείου που βρίσκεται στον client
    ViewState("FileNameEditItemTemplate") = TempSuppliersLogoFileUploadEditItemTemplate.FileName
    ClientSideFileNameEditItemTemplate = TempSuppliersLogoFileUploadEditItemTemplate.FileName

    'Ελέγχουμε αν αυτό το αρχείο είναι εικόνα
    If CheckFileType(TempSuppliersLogoFileUploadEditItemTemplate.FileName) = True Then

    'Καθορίζουμε το path που θα αποθηκευτεί το αρχείο στο server + το όνομα του αρχείου
    'και παίρνουμε το path για να το αποθηκεύσουμε στη βάση
    ServerSideFilePathEditItemTemplate = ServerSideFilePathEditItemTemplate + ClientSideFileNameEditItemTemplate
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Ελέγχουμε αν υπάρχει ήδη το αρχείο με αυτό το όνομα
    If System.IO.File.Exists(ServerSideFilePathEditItemTemplate) Then

    PromptUpdate = MsgBox("Είστε σίγουρος ότι θέλετε να αντικαταστήσετε το υπάρχον αρχείο με αυτό;", 1, "Επιβεβαίωση Αντικατάστασης Αρχείου")
    If PromptUpdate = 1 Then
    'Ανεβάζουμε όλες τις πληροφορίες στο server
    Try

    If TempSuppliersLogoFileUploadEditItemTemplate.PostedFile.ContentLength > 2097152 Then
    TempResultLabelEditItemTemplate.Text = "Το αρχείο δεν ανέβηκε γιατί είναι μεγαλύτερο από 2 MB"
    End If
    TempSuppliersLogoFileUploadEditItemTemplate.SaveAs(ServerSideFilePathEditItemTemplate)
    TempResultLabelEditItemTemplate.Text = "Το αρχείο " + TempSuppliersLogoFileUploadEditItemTemplate.FileName + " ανέβηκε επιτυχώς "

    Catch ex As Exception
    TempResultLabelEditItemTemplate.Text = "Η εισαγωγή απέτυχε." + ex.Message
    End Try

    Else
    TempResultLabelEditItemTemplate.Text = "Ακυρώσατε την αντικατάσταση του αρχείου"
    End If
    Else
    'Ανεβάζουμε όλες τις πληροφορίες στο server
    Try

    If TempSuppliersLogoFileUploadEditItemTemplate.PostedFile.ContentLength > 2097152 Then
    TempResultLabelEditItemTemplate.Text = "Το αρχείο δεν ανέβηκε γιατί είναι μεγαλύτερο από 2 MB"
    End If
    TempSuppliersLogoFileUploadEditItemTemplate.SaveAs(ServerSideFilePathEditItemTemplate)
    TempResultLabelEditItemTemplate.Text = "Το αρχείο " + TempSuppliersLogoFileUploadEditItemTemplate.FileName + " ανέβηκε επιτυχώς "

    Catch ex As Exception
    TempResultLabelEditItemTemplate.Text = "Η εισαγωγή απέτυχε." + ex.Message
    End Try


    End If
    Else

    TempResultLabelEditItemTemplate.Text = "Το αρχείο δεν είναι εικόνα, δεν ανέβηκε στο server, γιατί είναι τύπου " + TempSuppliersLogoFileUploadEditItemTemplate.PostedFile.ContentType
    End If


    Else
    TempResultLabelEditItemTemplate.Text = "Δεν μπορείτε να ανεβάσετε στο server αυτήν την εισαγωγή, γιατί δεν είναι διαδρομή αρχείου"

    End If
    End Sub
    ''''''''Τέλος Ανεβάσματος Λογοτύπου του Προμηθευτή στην Επεξεργασία του Προμηθευτή '''''''''''''''''''''
     
  •  05-06-2008, 14:36 42684 σε απάντηση της 42683

    Απ: Αλλού παίζει, αλλού δε...παίζει

    Για ποιά από τις μεταβλητές που έχεις δηλωμένες μιλάς, και ποιό είναι το full error? Θα ήταν χρήσιμο να δούμε σε ποιά γραμμή (με την αρίθμηση που δίνεις εδώ) συμβαίνει το πρόβλημα.

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  05-06-2008, 14:37 42685 σε απάντηση της 42684

    Απ: Αλλού παίζει, αλλού δε...παίζει

    Ακυρο, το είδα στα σχόλια εντός του κώδικα (κοιτώντας λίγο πιό προσεκτικα :) )

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  05-06-2008, 14:41 42686 σε απάντηση της 42685

    Απ: Αλλού παίζει, αλλού δε...παίζει

    Best Guess: Το πρόβλημα ξεκινάει από εδώ:

         TempSuppliersLogoFileUploadEditItemTemplate = Suppliersform.FindControl("FileUpload1")

    Λογικά η Suppliersform πρέπει να υπάρχει, αλλιώς θα σου χτύπαγε εκεί. Ομως, οπως λες το τρέχεις σε τρείς σελίδες και στην τέταρτη δεν τρέχει. Υπάρχει το FileUpload1 control με αυτό το id στην συγκεκριμένη σελίδα που δεν τρέχει; Αλλιώς η ΜεταβλητηΜεΠολυΜεγαλοΟνομαΠουΒαριεμαιΝαΞαναγραφω που έχεις βάλει θα πάρει τιμή nothing, και φυσικά θα χτυπήσει όταν πας παρακάτω να τη ρωτήσεις "HasFile"? "Τι hasfile ρε μεγάλε", θα σου πει, "εγώ δεν ξέρω ουτε καν ποιός είμαι και απο που έρχομαι και που πηγαίνω". :)

     

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  05-06-2008, 14:44 42687 σε απάντηση της 42686

    Απ: Αλλού παίζει, αλλού δε...παίζει

    To FileUpload Control υπάρχει κανονικά, και η FormView και όλα.
  •  05-06-2008, 15:24 42690 σε απάντηση της 42687

    Απ: Αλλού παίζει, αλλού δε...παίζει

    Μετα τη γραμμή αυτή:
      'Βρίσκουμε τα control για το ανέβασμα του αρχείου
    TempSuppliersLogoFileUploadEditItemTemplate = Suppliersform.FindControl("FileUpload1") <-- Η εύρεση του control από το FormView

    τι έχει μέσα το  TempSuppliersLogoFileUploadEditItemTemplate   . Βάλε ένα breakpoint μετά από αυτή τη γραμμή και με ένα quick watch ή  στο immiediate ένα .tostring να δεις τι έχει μέσα. Μήπως είνα nothing αυτή η μεταβλητή
    Και εγώ εκεί νομίζω είναι το λάθος. Τσέκαρε πάλι και το id και μην ξεχνάς ότι είναι case sensitive.



    Manos
  •  05-06-2008, 15:49 42693 σε απάντηση της 42690

    Απ: Αλλού παίζει, αλλού δε...παίζει

    Ήδη το έχω δοκιμάσει, μου έβγαζε HasFile = false. Έσβησα τα controls, τα ξαναέβαλα με διαφορετικά ονόματα, τίποτα. Ξαναέγραψα τον κώδικα του event τίποτα. Δεν ξέρω αν τρέξει σε άλλο πισι,  μάλλον αυτό θα δοκιμάσω σήμερα. Δεν μπορώ να σκεφτώ κάτι άλλο.
  •  05-06-2008, 15:54 42694 σε απάντηση της 42693

    Απ: Αλλού παίζει, αλλού δε...παίζει

    Μήπως στις υπόλοιπες σελίδες που παίζει έχεις hasfile=true, και το πρόβλημα δεν είναι στη γραμμή που μας υποδεικνύεεις αλλα στην αμέσως επόμενη, οπου ζητάς το filename property, το οποίο δεν θα υφίσταται αν δεν υπάρχει file;

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  05-06-2008, 16:04 42695 σε απάντηση της 42694

    Απ: Αλλού παίζει, αλλού δε...παίζει

    Δεν είναι όχι. Με το που φτάνει εκεί το debugging μου πετάει το σφάλμα.
  •  05-06-2008, 16:09 42696 σε απάντηση της 42695

    Απ: Αλλού παίζει, αλλού δε...παίζει

    Έλεος, απλά έλεος. Αντέγραψα τον κώδικα από άλλη σελίδα και έτρεξε. Ο ίδιος κώδικας. Τι στο καλό;;;;;;;;
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems