Autor Thema: ArrayAppend: Hilfe benötigt  (Gelesen 2959 mal)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
ArrayAppend: Hilfe benötigt
« am: 24.03.03 - 13:07:37 »
Hallo Leute,

ich habe in einer SQL Datenbank mehrere Datensätze, die ich
in einem Notesfeld darstelen möchte.

Leider klappt die Zeile mit dem ArrayAppend nicht.
Kann mir da jemand helfen ?

Ich möchte zudem Speicherschonender programmieren,
welche Objekte muß ich in dieser Funktion auf Null
setzten?

Ciao

Don Pasquale

Function getNotiz ( DOC_ID As String ) As Variant
   
   Dim NOTIZFELD() As String
   
   Dim DSN As String
   Dim USER As String
   Dim PASSW As String
   
   DSN = getODBC("E4IHK","DSN")
   USER = getODBC("E4IHK","USER")
   PASSW = getODBC("E4IHK","PASSW")
   
   Dim SQL As String
   Dim iNotiz As Integer
   Dim Con As New ODBCConnection     
   Dim Qry As New ODBCQuery  
   Dim res As New ODBCResultSet  
   Dim Notizzeile As String
   Dim nUser As String
   
   If Not Con.ConnectTo(DSN, USER, PASSW)   Then
      Messagebox " Keine Verbindung zur e4\IHK Datenbank" & Chr$(10) & "Überprüfen Sie bitte den DSN Wert in Ihrem Profildokument" & Chr$(10) & "e4_lib: INDEXIEREN2"
      Exit Function
   Else
      SQL = "Select  USER_ID, NOTIZTEXT FROM FIRMENAKTE_NOTIZ WHERE DOC_ID = " & Chr$(39) & DOC_ID & Chr$(39)
      
      Set Qry.Connection = Con
      Qry.SQL = SQL
      Set res.Query = Qry
      
      
      If Not res.Execute Then
         Messagebox _
         res.GetExtendedErrorMessage,, res.GetErrorMessage
         Exit Function
      Else
         RetCode% = res.FirstRow              
         
         nUSER = res.GetValue( "USER_ID" )
         NOTIZZEILE = nUSER & " " & res.GetValue( "NOTIZTEXT" ) & Lf
         NOTIZFELD(0) = NOTIZZEILE         
         Call res.NextRow
         Do While Not res.IsEndOfData
            nUSER = res.GetValue( "USER_ID" )
            NOTIZZEILE = nUSER & " " & res.GetValue( "NOTIZTEXT" ) & Lf
'            NOTIZFELD = Arrayappend( NOTIZFELD , NOTIZZEILE)               
            Call res.NextRow
         Loop
         getNotiz = NOTIZFELD      
      End If
   End If
   
   
   
   
   
End Function

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:ArrayAppend: Hilfe benötigt
« Antwort #1 am: 24.03.03 - 13:13:39 »
... das liegt an deinem .GetValue => liefert ein Array => Array und Textstring gibt Type mismatch...

ata
Grüßle Toni :)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:ArrayAppend: Hilfe benötigt
« Antwort #2 am: 24.03.03 - 13:24:39 »
@ata :

Wirklich ? Ich dachte
res.GetValue( "NOTIZTEXT" )

gibt mir einen String ?

Kannitverstan

Don Pasquale


Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:ArrayAppend: Hilfe benötigt
« Antwort #3 am: 24.03.03 - 13:30:38 »
... sorry, ich war zu schnell - der fehler könnte in der Dimensionierung deines Array liegen - ein Redim NotizFeld(0 to 0) fehlt...

ata
Grüßle Toni :)

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:ArrayAppend: Hilfe benötigt
« Antwort #4 am: 24.03.03 - 13:34:10 »
Zitat
[quote Ich möchte zudem Speicherschonender programmieren,


 :o :o  Begeisterung  :o :o

seit es windows von gates gibt(und RAM ohne Ende) denkt keiner mehr an Speicheroptimierung

res.getvalue  gibt einen string zurück
Arrayappend  - macht das was der Name schon sagt - ein variant an ein array anhängen - du hast aber eine string und kein variant


cu
« Letzte Änderung: 24.03.03 - 13:35:40 von Performance »
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:ArrayAppend: Hilfe benötigt
« Antwort #5 am: 24.03.03 - 13:35:39 »
@Performance

... das täuscht - du kannst auch einen String an ein Array hängen - ich arbeite täglich damit...

ata
Grüßle Toni :)

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:ArrayAppend: Hilfe benötigt
« Antwort #6 am: 24.03.03 - 13:43:32 »
@ata

ok getäuscht(liegt daran das ich in diesem fall immer den gleichen typ wähle) - habe dein redim jetzt auch gelesen - daran liegts


cu


« Letzte Änderung: 24.03.03 - 13:44:15 von Performance »
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:ArrayAppend: Hilfe benötigt
« Antwort #7 am: 24.03.03 - 13:59:07 »
... sorry, ich war zu schnell - der fehler könnte in der Dimensionierung deines Array liegen - ein Redim NotizFeld(0 to 0) fehlt...

ata

Ähm, an welche Stelle ?

Gruß

Don Pasquale

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:ArrayAppend: Hilfe benötigt
« Antwort #8 am: 24.03.03 - 14:11:26 »
... du kannst im Grunde vor deiner ersten Zuweisung den Redim setzen...

' # ...
Redim NOTIZFELD(0 to 0)
NOTIZFELD(0) = NOTIZZEILE        
' # ...

ata
Grüßle Toni :)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:ArrayAppend: Hilfe benötigt
« Antwort #9 am: 24.03.03 - 14:47:43 »
Das ist mein aktueller Code, der alle Zeilen aus der SQL Datenbank nimmt, nur leider die letzte nicht. Die Quote ist ja ganz gut,
reicht in dem Fall aber nicht aus.

Was mache ich falsch ?

Ciao

Don Pasquale



Function getNotiz ( DOC_ID As String ) As Variant
   
   Dim NOTIZFELD() As String
   Dim max As Integer
   Dim i As Integer
   Dim DSN As String
   Dim USER As String
   Dim PASSW As String
   
   DSN = getODBC("E4IHK","DSN")
   USER = getODBC("E4IHK","USER")
   PASSW = getODBC("E4IHK","PASSW")
   
   Dim SQL As String
   Dim iNotiz As Integer
   Dim Con As New ODBCConnection     
   Dim Qry As New ODBCQuery  
   Dim res As New ODBCResultSet  
   Dim Notizzeile As String
   Dim nUser As String
   
   If Not Con.ConnectTo(DSN, USER, PASSW)   Then
      Messagebox " Keine Verbindung zur e4\IHK Datenbank" & Chr$(10) & "Überprüfen Sie bitte den DSN Wert in Ihrem Profildokument" & Chr$(10) & "e4_lib: INDEXIEREN2"
      Exit Function
   Else
      SQL = "Select  USER_ID, NOTIZTEXT FROM FIRMENAKTE_NOTIZ WHERE DOC_ID = " & Chr$(39) & DOC_ID & Chr$(39)
      
      Set Qry.Connection = Con
      Qry.SQL = SQL
      Set res.Query = Qry
      
      
      If Not res.Execute Then
         Messagebox _
         res.GetExtendedErrorMessage,, res.GetErrorMessage
         Exit Function
      Else
         RetCode% = res.FirstRow              
   '      max = Res.Count
         
         nUSER = res.GetValue( "USER_ID" )
         NOTIZZEILE = nUSER & " " & res.GetValue( "NOTIZTEXT" ) & Lf
         
         i = 0         
         Redim Preserve NOTIZFELD( 0 To i +1)         
         NOTIZFELD(i) = NOTIZZEILE         
         
         Call res.NextRow
         i = i + 1
         
         Do While Not res.IsEndOfData
            nUSER = res.GetValue( "USER_ID" )
            NOTIZZEILE = nUSER & " " & res.GetValue( "NOTIZTEXT" ) & Lf
            Redim Preserve NOTIZFELD(0 To i+1)         
            NOTIZFELD(i) = NOTIZZEILE         
            
            Call res.NextRow
            i = i + 1
         Loop
         getNotiz = NOTIZFELD      
      End If
   End If
   
   
   
End Function

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:ArrayAppend: Hilfe benötigt
« Antwort #10 am: 24.03.03 - 14:52:32 »
... dein hochzählen der Variable i - hab es nur überflogen - kann es sein daß du dich hier verzählst?

ata
Grüßle Toni :)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:ArrayAppend: Hilfe benötigt
« Antwort #11 am: 24.03.03 - 15:31:14 »
@ata:

Nein, es liegt nicht an der Zählvariable i, es liegt
an meiner While Schleife. Die Fragt nach endofdata
ab und das scheint bereits bei der letzten Zeile der
Fall zu sein.

folgender code löst das Problem

         i = 0         
         Redim Preserve NOTIZFELD( 0 To i +1)         
         NOTIZFELD(i) = NOTIZZEILE         
         
         Call res.NextRow
         i = i + 1
         
         Do While Not res.IsEndOfData
            nUser = getUSerNameofID(res.GetValue( "USER_ID" ) )
            NOTIZZEILE = nUSER & " " & res.GetValue( "NOTIZTEXT" ) & Lf
            Redim Preserve NOTIZFELD(0 To i+1)         
            NOTIZFELD(i) = NOTIZZEILE         
            
            Call res.NextRow
            i = i + 1
         Loop
         
         nUser = getUSerNameofID(res.GetValue( "USER_ID" ) )
         NOTIZZEILE = nUSER & " " & res.GetValue( "NOTIZTEXT" ) & Lf
         Redim Preserve NOTIZFELD(0 To i+1)         
         NOTIZFELD(i) = NOTIZZEILE         
         
         getNotiz = NOTIZFELD      
         
      End If
   End If


Ich weise einfach nochmal eine Notizzeile zu.

Gruß

Don Pasquale

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz