Noch ein Problem mit der DB von NTQ

Anfängerfragen zum Programmieren mit PureBasic.
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Noch ein Problem mit der DB von NTQ

Beitrag von Aspirant »

Hallo,
jetzt begreife ich das Problem nicht mehr wirklich, aber vielleicht kann mich ja mal jemand ins Licht führen.

Code: Alles auswählen

Procedure Eingabe()
  OpenWindow(#efenster,0,0,500,400,"Daten Bearbeitung",#PB_Window_BorderLess|#PB_Window_WindowCentered,#hfenster)
  StickyWindow(#efenster, 1) 
    CreateGadgetList(WindowID(#efenster))
      ButtonGadget(100, 210,  5, 70, 20, "Fertig")
      CalendarGadget(101, 3, 5, 200, 180)
      Debug GetGadgetState(101) 
      TextGadget(102, 3, 190, 92, 20, FormatDate("%dd.%mm.%yyyy",GetGadgetState(101)), #PB_Text_Border)
      ComboBoxGadget(103, 100, 190, 60, 300)
      ComboBoxGadget(104, 165, 190, 60, 300)
      ForEach zeit()
        AddGadgetItem(103, -1,zeit())
        AddGadgetItem(104, -1,zeit())
      Next
      *DB\ResetRow()  ;<-- Im Hauptcode ok und in Procedur Fehlerhaft
      Debug i
      DB_SelectRowByEntry(*DB, 1, FormatDate("%yyyy%mm%dd",GetGadgetState(101)))
      For i=0 To CountList(zeit())
      If *DB\GetEntryS(2) = SelectElement(zeit(), i) ;<-- Im Hauptcode ok und in Procedur Fehlerhaft
        SetGadgetState(103, i)
      EndIf
      If *DB\GetEntryS(3) = SelectElement(zeit(), i) ;<-- Im Hauptcode ok und in Procedur Fehlerhaft
        SetGadgetState(104, i)
      EndIf

        
      Repeat:
        If EventGadget()= 101
          SetGadgetText(102, FormatDate("%dd.%mm.%yyyy",GetGadgetState(101)))
        EndIf  
        If EventType() = #PB_EventType_LeftClick And EventGadget() = 100 
          SetActiveGadget(3)
          Debug "Fertig"
          CloseWindow(#efenster)
          Break
        EndIf
      Until WaitWindowEvent() = #PB_Event_CloseWindow
EndProcedure
Die Markierten Datenbank Kommandos Funktionierten im Hauptcode so wie sie sollten, aber nicht in der Procedur da gibt es immer Fehler:
*******************
[12:10:57] [COMPILER] Zeile 89: The following variable doesn't have a 'Structure': *DB
[12:11:14] [COMPILER] Zeile 91: Bad parameter type, number expected instead of string
[12:12:14] [COMPILER] Zeile 93: The following variable doesn't have a 'Structure': *DB
********************

Ich denke es Liegt daran das die DB-sachen nicht Global sind doch, wie mache ich sie global, wenn ich doch alles mit >>XIncludeFile "DB.pbi"<< in meinen code Einbinde?
Oder bin ich auf dem Falschen weg?
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Noch ein Problem mit der DB von NTQ

Beitrag von Kiffi »

Aspirant hat geschrieben:Ich denke es Liegt daran das die DB-sachen nicht Global sind doch, wie mache ich sie global, wenn ich doch alles mit >>XIncludeFile "DB.pbi"<< in meinen code Einbinde?
ich glaube, Du hast da einen Denkfehler. Nic verwendet in seinem Include die
Variable *DB für sich selber. Diese solltest Du in Deinem Code nach
Möglichkeit nicht verwenden. Nimm anstelle dessen eine eigene
Variable (Beispielsweise *myDB).

Nichtsdestotrotz musst Du dann dafür sorgen, dass *myDB auch in
Prozeduren bekannt ist. Entweder über Global, Shared oder als
Übergabeparameter.

Grüße ... Kiffi
a²+b²=mc²
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Beitrag von Aspirant »

@Kiffi

Danke für deine Antwort, doch ich möchte ja die DB von NTQ verwenden wes wegen ich sein Kommandos benutze ich möchte mein Daten in seine DB schreiben, Lesen und vergleichen. Weswegen ich jetzt nicht nach vollziehen kann was du mit einen Gedanken Fehler meinst?

zu kurzen Erklärung:
Die Prozedur oben soll eine Eingabe in die DB machen soll aber auch Prüfen ob der Eintrag schon vorhanden ist und ihn als Eingabe vorschlagen. Deswegen auch die Verwendung der Kommandos von NTQ weil ich ja in seine DB die Operation durchführe

MFG Aspirant
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Hallo Aspirant,
um helfen zu können, bitte auch die Proceduren, z. B. Zeit(), hinzufügen.
Ohne diese Procedure kann man den Code nicht ausführen.
Fazit: können also den Code nicht ausführen und somit auch nicht helfen.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Global *db.db oder besser als parameter in die Prozedur.

Falls das nicht der Fehler ist, dann bitte so viel Code posten, das man den
Fehler auch wirklich beurteilen kann, das ist mit einer Procedure so nicht
möglich.

PS: haste wirklich über einhundert Gadgets oder ist das nur
Speicherverschwendung? :wink:

// Edit:
den Namen *DB sollteste nicht nehmen. NTQ hat zwar alles protected
deklariert, aber man weiß ja nie.

Define.DB *myDB oder ähnlich ist besser, wie Kiffi bereits sagte.
Oder wenn Du die Variable nicht an die Procedure übergeben möchtest, dann
am CodeAnfang: Global *myDB.DB
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten